diff --git a/include/microkernel/base_api.h b/include/microkernel/base_api.h index 439786edb03..9eb2f53e9f4 100644 --- a/include/microkernel/base_api.h +++ b/include/microkernel/base_api.h @@ -104,6 +104,9 @@ struct k_task { int worksize; void (*fn_abort)(void); struct k_args *args; +#ifdef CONFIG_DEBUG_TRACING_KERNEL_OBJECTS + struct k_task *__next; +#endif }; /** diff --git a/include/misc/debug/object_tracing.h b/include/misc/debug/object_tracing.h index a3d69b3e100..e2e50fcc229 100644 --- a/include/misc/debug/object_tracing.h +++ b/include/misc/debug/object_tracing.h @@ -44,6 +44,7 @@ extern struct pool_struct *_trace_list_micro_mem_pool; extern struct _k_mem_map_struct *_trace_list_micro_mem_map; extern struct _k_event_struct *_trace_list_micro_event; extern struct k_timer *_trace_list_micro_timer; +extern struct k_task *_trace_list_micro_task; #endif /*CONFIG_MICROKERNEL*/ /** diff --git a/include/misc/debug/object_tracing_common.h b/include/misc/debug/object_tracing_common.h index bb80160e564..13d2f7fae7b 100644 --- a/include/misc/debug/object_tracing_common.h +++ b/include/misc/debug/object_tracing_common.h @@ -135,6 +135,7 @@ struct pool_struct *_trace_list_micro_mem_pool; struct _k_mem_map_struct *_trace_list_micro_mem_map; struct _k_event_struct *_trace_list_micro_event; struct k_timer *_trace_list_micro_timer; +struct k_task *_trace_list_micro_task; #endif /*CONFIG_MICROKERNEL*/ diff --git a/kernel/microkernel/k_task.c b/kernel/microkernel/k_task.c index ca1aeb458d5..d85a1c89f0f 100644 --- a/kernel/microkernel/k_task.c +++ b/kernel/microkernel/k_task.c @@ -27,6 +27,7 @@ #include #include #include +#include extern ktask_t _k_task_ptr_start[]; extern ktask_t _k_task_ptr_end[]; @@ -289,6 +290,7 @@ void _k_task_op(struct k_args *A) switch (A->args.g1.opt) { case TASK_START: start_task(X, X->fn_start); + SYS_TRACING_OBJ_INIT(micro_task, X); break; case TASK_ABORT: abort_task(X); @@ -354,6 +356,7 @@ void _k_task_group_op(struct k_args *A) switch (opt) { case TASK_GROUP_START: start_task(X, X->fn_start); + SYS_TRACING_OBJ_INIT(micro_task, X); break; case TASK_GROUP_ABORT: abort_task(X);