/* * Profiling infrastructure declarations. * * This file is based on gcc-internal definitions. Data structures are * defined to be compatible with gcc counterparts. For a better * understanding, refer to gcc source: gcc/gcov-io.h. * * Copyright IBM Corp. 2009 * Author(s): Peter Oberparleiter * * Uses gcc-internal data definitions. */ #ifndef GCOV_H #define GCOV_H GCOV_H #include /* * Profiling data types used for gcc 3.4 and above - these are defined by * gcc and need to be kept as close to the original definition as possible to * remain compatible. */ #define GCOV_DATA_MAGIC ((unsigned int) 0x67636461) #define GCOV_TAG_FUNCTION ((unsigned int) 0x01000000) #define GCOV_TAG_COUNTER_BASE ((unsigned int) 0x01a10000) #define GCOV_TAG_FOR_COUNTER(count) \ (GCOV_TAG_COUNTER_BASE + ((unsigned int) (count) << 17)) #if BITS_PER_LONG >= 64 typedef long gcov_type; #else typedef long long gcov_type; #endif /* Opaque gcov_info. The gcov structures can change as for example in gcc 4.7 so * we cannot use full definition here and they need to be placed in gcc specific * implementation of gcov. This also means no direct access to the members in * generic code and usage of the interface below.*/ struct gcov_info; /* Interface to access gcov_info data */ const char *gcov_info_filename(struct gcov_info *info); unsigned int gcov_info_version(struct gcov_info *info); struct gcov_info *gcov_info_next(struct gcov_info *info); void gcov_info_link(struct gcov_info *info); void gcov_info_unlink(struct gcov_info *prev, struct gcov_info *info); /* Base interface. */ enum gcov_action { GCOV_ADD, GCOV_REMOVE, }; void gcov_event(enum gcov_action action, struct gcov_info *info); void gcov_enable_events(void); /* Iterator control. */ struct seq_file; struct gcov_iterator; struct gcov_iterator *gcov_iter_new(struct gcov_info *info); void gcov_iter_free(struct gcov_iterator *iter); void gcov_iter_start(struct gcov_iterator *iter); int gcov_iter_next(struct gcov_iterator *iter); int gcov_iter_write(struct gcov_iterator *iter, struct seq_file *seq); struct gcov_info *gcov_iter_get_info(struct gcov_iterator *iter); /* gcov_info control. */ void gcov_info_reset(struct gcov_info *info); int gcov_info_is_compatible(struct gcov_info *info1, struct gcov_info *info2); void gcov_info_add(struct gcov_info *dest, struct gcov_info *source); struct gcov_info *gcov_info_dup(struct gcov_info *info); void gcov_info_free(struct gcov_info *info); struct gcov_link { enum { OBJ_TREE, SRC_TREE, } dir; const char *ext; }; extern const struct gcov_link gcov_link[]; #endif /* GCOV_H */
diff options
context:
space:
mode:
authorStanislaw Gruszka <sgruszka@redhat.com>2017-01-29 12:40:52 +0100
committerKalle Valo <kvalo@codeaurora.org>2017-01-31 09:08:52 +0200
commit33e962c8871f015f5c8978384553dddcf5b81b22 (patch)
tree43aff96c2ee21d9e0fa2018457778a4de52053cd /include/trace/events/alarmtimer.h
parent575ddce0507789bf9830d089557d2199d2f91865 (diff)
rt2x00: fix clk_get call
clk_get() takes two arguments and might return ERR_PTR(), so we have to nullify pointer on that case, to do not break further call to clk_get_rate(). Reported-by: Felix Fietkau <nbd@nbd.name> Fixes: 34db70b92fae ("rt2x00: add copy of clk for soc devices") Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'include/trace/events/alarmtimer.h')