Skip to content

Commit 5967ceb

Browse files
committed
kernel: init: register CPU object core via K_OBJ_TYPE_DEFINE
The CPU object core type was registered through a dedicated SYS_INIT. Like threads, CPUs have no statically defined instances to walk at boot: each CPU links its own object core in z_init_cpu(). The boot init only registered the type and its stats descriptor. Use K_OBJ_TYPE_DEFINE_TYPE_ONLY() for the CPU type, dropping init_cpu_obj_core_list() and its SYS_INIT. The type is still registered at PRE_KERNEL_1 by the single object core init walk, before z_init_cpu(0) runs during prepare_multithreading(), so ordering is unchanged. The kernel system object keeps its own init, as it links the singleton _kernel object. Assisted-by: Claude:claude-opus-4-8 Signed-off-by: Anas Nashif <anas.nashif@intel.com>
1 parent ce9584a commit 5967ceb

1 file changed

Lines changed: 8 additions & 17 deletions

File tree

kernel/init.c

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,14 @@ static struct k_obj_core_stats_desc kernel_stats_desc = {
175175
.disable = NULL,
176176
.enable = NULL,
177177
};
178+
179+
/* CPU object cores have no static instances to walk; each CPU links its own
180+
* object core in z_init_cpu(). Register the type only.
181+
*/
182+
K_OBJ_TYPE_DEFINE_TYPE_ONLY(obj_type_cpu, _cpu, K_OBJ_TYPE_CPU_ID,
183+
&cpu_stats_desc);
184+
#else
185+
K_OBJ_TYPE_DEFINE_TYPE_ONLY(obj_type_cpu, _cpu, K_OBJ_TYPE_CPU_ID, NULL);
178186
#endif /* CONFIG_OBJ_CORE_STATS_SYSTEM */
179187
#endif /* CONFIG_OBJ_CORE_SYSTEM */
180188

@@ -604,20 +612,6 @@ FUNC_NORETURN void z_cstart(void)
604612
}
605613

606614
#ifdef CONFIG_OBJ_CORE_SYSTEM
607-
static int init_cpu_obj_core_list(void)
608-
{
609-
/* Initialize CPU object type */
610-
611-
z_obj_type_init(&obj_type_cpu, K_OBJ_TYPE_CPU_ID,
612-
offsetof(struct _cpu, obj_core));
613-
614-
#ifdef CONFIG_OBJ_CORE_STATS_SYSTEM
615-
k_obj_type_stats_init(&obj_type_cpu, &cpu_stats_desc);
616-
#endif /* CONFIG_OBJ_CORE_STATS_SYSTEM */
617-
618-
return 0;
619-
}
620-
621615
static int init_kernel_obj_core_list(void)
622616
{
623617
/* Initialize kernel object type */
@@ -638,9 +632,6 @@ static int init_kernel_obj_core_list(void)
638632
return 0;
639633
}
640634

641-
SYS_INIT(init_cpu_obj_core_list, PRE_KERNEL_1,
642-
CONFIG_KERNEL_INIT_PRIORITY_OBJECTS);
643-
644635
SYS_INIT(init_kernel_obj_core_list, PRE_KERNEL_1,
645636
CONFIG_KERNEL_INIT_PRIORITY_OBJECTS);
646637
#endif /* CONFIG_OBJ_CORE_SYSTEM */

0 commit comments

Comments
 (0)