kernel: Integrate object cores into kernel
Integrates object cores into the following kernel structures
sys_mem_blocks, k_mem_slab
_cpu, z_kernel
k_thread, k_timer
k_condvar, k_event, k_mutex, k_sem
k_mbox, k_msgq, k_pipe, k_fifo, k_lifo, k_stack
Signed-off-by: Peter Mitsis <peter.mitsis@intel.com>
diff --git a/kernel/msg_q.c b/kernel/msg_q.c
index 8256611..5b0f7cb 100644
--- a/kernel/msg_q.c
+++ b/kernel/msg_q.c
@@ -25,6 +25,10 @@
#include <kernel_internal.h>
#include <zephyr/sys/check.h>
+#ifdef CONFIG_OBJ_CORE_MSGQ
+static struct k_obj_type obj_type_msgq;
+#endif
+
#ifdef CONFIG_POLL
static inline void handle_poll_events(struct k_msgq *msgq, uint32_t state)
{
@@ -49,6 +53,10 @@
sys_dlist_init(&msgq->poll_events);
#endif /* CONFIG_POLL */
+#ifdef CONFIG_OBJ_CORE_MSGQ
+ k_obj_core_init_and_link(K_OBJ_CORE(msgq), &obj_type_msgq);
+#endif
+
SYS_PORT_TRACING_OBJ_INIT(k_msgq, msgq);
z_object_init(msgq);
@@ -409,3 +417,25 @@
#include <syscalls/k_msgq_num_used_get_mrsh.c>
#endif
+
+#ifdef CONFIG_OBJ_CORE_MSGQ
+static int init_msgq_obj_core_list(void)
+{
+ /* Initialize msgq object type */
+
+ z_obj_type_init(&obj_type_msgq, K_OBJ_TYPE_MSGQ_ID,
+ offsetof(struct k_msgq, obj_core));
+
+ /* Initialize and link statically defined message queues */
+
+ STRUCT_SECTION_FOREACH(k_msgq, msgq) {
+ k_obj_core_init_and_link(K_OBJ_CORE(msgq), &obj_type_msgq);
+ }
+
+ return 0;
+};
+
+SYS_INIT(init_msgq_obj_core_list, PRE_KERNEL_1,
+ CONFIG_KERNEL_INIT_PRIORITY_OBJECTS);
+
+#endif