123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * 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 <oberpar@linux.vnet.ibm.com>
- *
- * Uses gcc-internal data definitions.
- */
- #ifndef GCOV_H
- #define GCOV_H GCOV_H
- #include <linux/types.h>
- /*
- * 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_COUNTERS 5
- #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
- /**
- * struct gcov_fn_info - profiling meta data per function
- * @ident: object file-unique function identifier
- * @checksum: function checksum
- * @n_ctrs: number of values per counter type belonging to this function
- *
- * This data is generated by gcc during compilation and doesn't change
- * at run-time.
- */
- struct gcov_fn_info {
- unsigned int ident;
- unsigned int checksum;
- unsigned int n_ctrs[0];
- };
- /**
- * struct gcov_ctr_info - profiling data per counter type
- * @num: number of counter values for this type
- * @values: array of counter values for this type
- * @merge: merge function for counter values of this type (unused)
- *
- * This data is generated by gcc during compilation and doesn't change
- * at run-time with the exception of the values array.
- */
- struct gcov_ctr_info {
- unsigned int num;
- gcov_type *values;
- void (*merge)(gcov_type *, unsigned int);
- };
- /**
- * struct gcov_info - profiling data per object file
- * @version: gcov version magic indicating the gcc version used for compilation
- * @next: list head for a singly-linked list
- * @stamp: time stamp
- * @filename: name of the associated gcov data file
- * @n_functions: number of instrumented functions
- * @functions: function data
- * @ctr_mask: mask specifying which counter types are active
- * @counts: counter data per counter type
- *
- * This data is generated by gcc during compilation and doesn't change
- * at run-time with the exception of the next pointer.
- */
- struct gcov_info {
- unsigned int version;
- struct gcov_info *next;
- unsigned int stamp;
- const char *filename;
- unsigned int n_functions;
- const struct gcov_fn_info *functions;
- unsigned int ctr_mask;
- struct gcov_ctr_info counts[0];
- };
- /* 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 */
|