diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-08 21:07:49 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2025-02-08 21:07:49 +0100 |
commit | 9a7ba7fd88fbc87c6e25e82d8c3bb838bf1ebf8d (patch) | |
tree | b223480247a535bca708672305698c1479c09246 | |
parent | b75c7dda611432e8598bcd0ab9652380a4f819c7 (diff) |
Add names to kernel tasks and threads
-rw-r--r-- | device/device_init.c | 4 | ||||
-rw-r--r-- | kern/bootstrap.c | 2 | ||||
-rw-r--r-- | kern/profile.c | 4 | ||||
-rw-r--r-- | kern/startup.c | 15 | ||||
-rw-r--r-- | kern/thread.c | 1 | ||||
-rw-r--r-- | kern/thread.h | 8 |
6 files changed, 25 insertions, 9 deletions
diff --git a/device/device_init.c b/device/device_init.c index 287d0a20..8a2c295f 100644 --- a/device/device_init.c +++ b/device/device_init.c @@ -62,6 +62,6 @@ device_service_create(void) device_pager_init(); chario_init(); - (void) kernel_thread(kernel_task, io_done_thread, 0); - (void) kernel_thread(kernel_task, net_thread, 0); + (void) kernel_thread(kernel_task, "io_done", io_done_thread, 0); + (void) kernel_thread(kernel_task, "net", net_thread, 0); } diff --git a/kern/bootstrap.c b/kern/bootstrap.c index 0470e1b6..2ad11635 100644 --- a/kern/bootstrap.c +++ b/kern/bootstrap.c @@ -335,7 +335,9 @@ bootstrap_exec_compat(void *e) */ (void) task_create(TASK_NULL, FALSE, &bootstrap_task); + (void) task_set_name(bootstrap_task, "bootstrap"); (void) thread_create(bootstrap_task, &bootstrap_thread); + (void) thread_set_name(bootstrap_thread, "bootstrap"); /* * Insert send rights to the master host and device ports. diff --git a/kern/profile.c b/kern/profile.c index 4fcd541f..35b273a0 100644 --- a/kern/profile.c +++ b/kern/profile.c @@ -326,7 +326,7 @@ printf("ERROR:mach_sample_thread:cannot set pbuf_nb\n"); cur_thread->thread_profiled = TRUE; cur_thread->thread_profiled_own = TRUE; if (profile_thread_id == THREAD_NULL) - profile_thread_id = kernel_thread(current_task(), profile_thread); + profile_thread_id = kernel_thread(current_task(), "profile", profile_thread); } else { if (!cur_thread->thread_profiled_own) cur_thread->thread_profiled = FALSE; @@ -379,7 +379,7 @@ mach_sample_task (ipc_space_t task, ipc_object_t reply, task_t cur_task) if (turnon && profile_thread_id == THREAD_NULL) profile_thread_id = - kernel_thread(current_task(), profile_thread); + kernel_thread(current_task(), "profile", profile_thread); cur_task->task_profiled = turnon; actual = cur_task->thread_count; sentone = 0; diff --git a/kern/startup.c b/kern/startup.c index 61751d35..db558a3e 100644 --- a/kern/startup.c +++ b/kern/startup.c @@ -50,6 +50,7 @@ #include <kern/xpr.h> #include <kern/bootstrap.h> #include <kern/startup.h> +#include <kern/printf.h> #include <vm/vm_kern.h> #include <vm/vm_map.h> #include <vm/vm_object.h> @@ -175,6 +176,7 @@ void setup_main(void) * Create the thread, and point it at the routine. */ (void) thread_create(kernel_task, &startup_thread); + thread_set_name(startup_thread, "startup"); thread_start(startup_thread, start_kernel_threads); /* @@ -215,8 +217,11 @@ void start_kernel_threads(void) for (i = 0; i < NCPUS; i++) { if (machine_slot[i].is_cpu) { thread_t th; + char name[10]; (void) thread_create(kernel_task, &th); + snprintf(name, sizeof(name), "idle/%d", i); + thread_set_name(th, name); thread_bind(th, cpu_to_processor(i)); thread_start(th, idle_thread); thread_doswapin(th); @@ -224,18 +229,18 @@ void start_kernel_threads(void) } } - (void) kernel_thread(kernel_task, reaper_thread, (char *) 0); - (void) kernel_thread(kernel_task, swapin_thread, (char *) 0); - (void) kernel_thread(kernel_task, sched_thread, (char *) 0); + (void) kernel_thread(kernel_task, "reaper", reaper_thread, (char *) 0); + (void) kernel_thread(kernel_task, "swapin", swapin_thread, (char *) 0); + (void) kernel_thread(kernel_task, "sched", sched_thread, (char *) 0); #ifndef MACH_XEN - (void) kernel_thread(kernel_task, intr_thread, (char *)0); + (void) kernel_thread(kernel_task, "intr", intr_thread, (char *)0); #endif /* MACH_XEN */ #if NCPUS > 1 /* * Create the shutdown thread. */ - (void) kernel_thread(kernel_task, action_thread, (char *) 0); + (void) kernel_thread(kernel_task, "action", action_thread, (char *) 0); /* * Allow other CPUs to run. diff --git a/kern/thread.c b/kern/thread.c index a656c076..69d24eaa 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -1712,6 +1712,7 @@ thread_start( thread_t kernel_thread( task_t task, + const char * name, continuation_t start, void * arg) { diff --git a/kern/thread.h b/kern/thread.h index 81d32924..4c7ef507 100644 --- a/kern/thread.h +++ b/kern/thread.h @@ -304,6 +304,7 @@ extern void thread_start( continuation_t start); extern thread_t kernel_thread( task_t task, + const char * name, continuation_t start, void *arg); extern kern_return_t thread_priority( @@ -353,6 +354,12 @@ extern kern_return_t thread_assign( extern kern_return_t thread_assign_default( thread_t thread); extern void stack_collect(void); +extern kern_return_t thread_set_name( + thread_t thread, + const_kernel_debug_name_t name); +extern kern_return_t thread_get_name( + thread_t thread, + kernel_debug_name_t name); #endif /* @@ -374,6 +381,7 @@ extern void thread_halt_self(continuation_t); extern void thread_force_terminate(thread_t); extern thread_t kernel_thread( task_t task, + const char * name, void (*start)(void), void * arg); |