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