kernel: Bring back object tracking
When CONFIG_TRACING_OBJECT_TRACKING is enabled, the kernel will keep lists of some objects (detailed below), so that debuggers or other tools can keep track of them. The lists of objects are: struct k_timer *_track_list_k_timer; struct k_mem_slab *_track_list_k_mem_slab; struct k_sem *_track_list_k_sem; struct k_mutex *_track_list_k_mutex; struct k_stack *_track_list_k_stack; struct k_msgq *_track_list_k_msgq; struct k_mbox *_track_list_k_mbox; struct k_pipe *_track_list_k_pipe; struct k_queue *_track_list_k_queue; Note that while CONFIG_TRACING is needed, one can always use CONFIG_TRACE_NONE=y. Also, tracking will only be done for objects that are also being traced (so, to prevent tracking of some type of object, such as k_timer, just make CONFIG_TRACING_TIMER=n). Some simple "sanity checking" tests are also added in this patch. Signed-off-by: Ederson de Souza <ederson.desouza@intel.com>
This commit is contained in:
parent
d7bbfabfc3
commit
bdaac354f4
12 changed files with 544 additions and 0 deletions
|
@ -1288,6 +1288,7 @@ struct k_timer {
|
|||
/* user-specific data, also used to support legacy features */
|
||||
void *user_data;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_timer)
|
||||
};
|
||||
|
||||
#define Z_TIMER_INITIALIZER(obj, expiry, stop) \
|
||||
|
@ -1670,6 +1671,8 @@ struct k_queue {
|
|||
_wait_q_t wait_q;
|
||||
|
||||
_POLL_EVENT;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_queue)
|
||||
};
|
||||
|
||||
#define Z_QUEUE_INITIALIZER(obj) \
|
||||
|
@ -2548,6 +2551,8 @@ struct k_stack {
|
|||
stack_data_t *base, *next, *top;
|
||||
|
||||
uint8_t flags;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_stack)
|
||||
};
|
||||
|
||||
#define Z_STACK_INITIALIZER(obj, stack_buffer, stack_num_entries) \
|
||||
|
@ -2705,6 +2710,8 @@ struct k_mutex {
|
|||
|
||||
/** Original thread priority */
|
||||
int owner_orig_prio;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_mutex)
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -2888,6 +2895,8 @@ struct k_sem {
|
|||
|
||||
_POLL_EVENT;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_sem)
|
||||
|
||||
};
|
||||
|
||||
#define Z_SEM_INITIALIZER(obj, initial_count, count_limit) \
|
||||
|
@ -4328,6 +4337,8 @@ struct k_msgq {
|
|||
|
||||
/** Message queue */
|
||||
uint8_t flags;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_msgq)
|
||||
};
|
||||
/**
|
||||
* @cond INTERNAL_HIDDEN
|
||||
|
@ -4617,6 +4628,7 @@ struct k_mbox {
|
|||
_wait_q_t rx_msg_queue;
|
||||
struct k_spinlock lock;
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_mbox)
|
||||
};
|
||||
/**
|
||||
* @cond INTERNAL_HIDDEN
|
||||
|
@ -4756,6 +4768,8 @@ struct k_pipe {
|
|||
} wait_q; /** Wait queue */
|
||||
|
||||
uint8_t flags; /**< Flags */
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_pipe)
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -4929,6 +4943,7 @@ struct k_mem_slab {
|
|||
uint32_t max_used;
|
||||
#endif
|
||||
|
||||
SYS_PORT_TRACING_TRACKING_FIELD(k_mem_slab)
|
||||
};
|
||||
|
||||
#define Z_MEM_SLAB_INITIALIZER(obj, slab_buffer, slab_block_size, \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue