track-usage.h 720 B

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef TRACK_USAGE_H
  2. #define TRACK_USAGE_H
  3. #ifdef TRACK_USAGE
  4. typedef struct track_usage_data_s {
  5. int count;
  6. const char *function;
  7. int line;
  8. const char *desc;
  9. struct track_usage_data_s *next;
  10. } track_usage_data_t;
  11. #define TRACK_LABEL(A) \
  12. do { \
  13. static track_usage_data_t USAGE_DATA = { 0 };\
  14. track_usage(&USAGE_DATA, __FILE__, __LINE__, A);\
  15. } while (0)
  16. #define TRACK_FN() \
  17. do { \
  18. static track_usage_data_t USAGE_DATA = { 0 };\
  19. track_usage(&USAGE_DATA, __FILE__, __LINE__, __FUNCTION__);\
  20. } while (0)
  21. void track_usage(track_usage_data_t *data, const char *function, int line, const char *desc);
  22. #else
  23. #define TRACK_LABEL(A) do { } while (0)
  24. #define TRACK_FN() do { } while (0)
  25. #endif
  26. #endif