123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- #ifndef CHTRACE_H
- #define CHTRACE_H
- #define CH_TRACE_TYPE_UNUSED 0U
- #define CH_TRACE_TYPE_SWITCH 1U
- #define CH_TRACE_TYPE_ISR_ENTER 2U
- #define CH_TRACE_TYPE_ISR_LEAVE 3U
- #define CH_TRACE_TYPE_HALT 4U
- #define CH_TRACE_TYPE_USER 5U
- #define CH_DBG_TRACE_MASK_DISABLED 255U
- #define CH_DBG_TRACE_MASK_NONE 0U
- #define CH_DBG_TRACE_MASK_SWITCH 1U
- #define CH_DBG_TRACE_MASK_ISR 2U
- #define CH_DBG_TRACE_MASK_HALT 4U
- #define CH_DBG_TRACE_MASK_USER 8U
- #define CH_DBG_TRACE_MASK_SLOW (CH_DBG_TRACE_MASK_SWITCH | \
- CH_DBG_TRACE_MASK_HALT | \
- CH_DBG_TRACE_MASK_USER)
- #define CH_DBG_TRACE_MASK_ALL (CH_DBG_TRACE_MASK_SWITCH | \
- CH_DBG_TRACE_MASK_ISR | \
- CH_DBG_TRACE_MASK_HALT | \
- CH_DBG_TRACE_MASK_USER)
- #if !defined(CH_DBG_TRACE_MASK) || defined(__DOXYGEN__)
- #define CH_DBG_TRACE_MASK CH_DBG_TRACE_MASK_DISABLED
- #endif
- #if !defined(CH_DBG_TRACE_BUFFER_SIZE) || defined(__DOXYGEN__)
- #define CH_DBG_TRACE_BUFFER_SIZE 128
- #endif
- #if (CH_DBG_TRACE_MASK != CH_DBG_TRACE_MASK_DISABLED) || defined(__DOXYGEN__)
- typedef struct {
-
- uint32_t type:3;
-
- uint32_t state:5;
-
- uint32_t rtstamp:24;
-
- systime_t time;
- union {
-
- struct {
-
- thread_t *ntp;
-
- void *wtobjp;
- } sw;
-
- struct {
-
- const char *name;
- } isr;
-
- struct {
-
- const char *reason;
- } halt;
-
- struct {
-
- void *up1;
-
- void *up2;
- } user;
- } u;
- } ch_trace_event_t;
- typedef struct {
-
- uint16_t suspended;
-
- uint16_t size;
-
- ch_trace_event_t *ptr;
-
- ch_trace_event_t buffer[CH_DBG_TRACE_BUFFER_SIZE];
- } ch_trace_buffer_t;
- #endif
- #if CH_DBG_TRACE_MASK == CH_DBG_TRACE_MASK_DISABLED
- #if !defined(_trace_init)
- #define _trace_init()
- #endif
- #if !defined(_trace_switch)
- #define _trace_switch(ntp, otp)
- #endif
- #if !defined(_trace_isr_enter)
- #define _trace_isr_enter(isr)
- #endif
- #if !defined(_trace_isr_leave)
- #define _trace_isr_leave(isr)
- #endif
- #if !defined(_trace_halt)
- #define _trace_halt(reason)
- #endif
- #if !defined(chDbgWriteTraceI)
- #define chDbgWriteTraceI(up1, up2)
- #endif
- #if !defined(chDbgWriteTrace)
- #define chDbgWriteTrace(up1, up2)
- #endif
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if (CH_DBG_TRACE_MASK != CH_DBG_TRACE_MASK_DISABLED) || defined(__DOXYGEN__)
- void _trace_init(void);
- void _trace_switch(thread_t *ntp, thread_t *otp);
- void _trace_isr_enter(const char *isr);
- void _trace_isr_leave(const char *isr);
- void _trace_halt(const char *reason);
- void chDbgWriteTraceI(void *up1, void *up2);
- void chDbgWriteTrace(void *up1, void *up2);
- void chDbgSuspendTraceI(uint16_t mask);
- void chDbgSuspendTrace(uint16_t mask);
- void chDbgResumeTraceI(uint16_t mask);
- void chDbgResumeTrace(uint16_t mask);
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif
|