diff options
Diffstat (limited to 'kern')
-rw-r--r-- | kern/thread.c | 20 | ||||
-rw-r--r-- | kern/thread.h | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/kern/thread.c b/kern/thread.c index 23ee8b09..2eab1ca4 100644 --- a/kern/thread.c +++ b/kern/thread.c @@ -46,6 +46,7 @@ #include <kern/counters.h> #include <kern/debug.h> #include <kern/eventcount.h> +#include <kern/gnumach.server.h> #include <kern/ipc_mig.h> #include <kern/ipc_tt.h> #include <kern/mach_debug.server.h> @@ -551,6 +552,10 @@ kern_return_t thread_create( #endif /* MACH_PCSAMPLE */ new_thread->pc_sample.buffer = 0; + + /* Inherit the task name as the thread name. */ + memcpy (new_thread->name, parent_task->name, THREAD_NAME_SIZE); + /* * Add the thread to the task`s list of threads. * The new thread holds another reference to the task. @@ -2624,3 +2629,18 @@ thread_stats(void) printf("%d using rpc_reply.\n", rpcreply); } #endif /* MACH_DEBUG */ + +/* + * thread_set_name + * + * Set the name of thread THREAD to NAME. + */ +kern_return_t +thread_set_name( + thread_t thread, + const_kernel_debug_name_t name) +{ + strncpy(thread->name, name, sizeof thread->name - 1); + thread->name[sizeof thread->name - 1] = '\0'; + return KERN_SUCCESS; +} diff --git a/kern/thread.h b/kern/thread.h index 7bfe2e89..21b25030 100644 --- a/kern/thread.h +++ b/kern/thread.h @@ -54,6 +54,12 @@ #include <machine/thread.h> #include <ipc/ipc_kmsg_queue.h> +/* + * Thread name buffer size. Use the same size as the task so + * the thread can inherit the task's name. + */ +#define THREAD_NAME_SIZE TASK_NAME_SIZE + struct thread { /* Run queues */ queue_chain_t links; /* current run queue links */ @@ -232,6 +238,8 @@ struct thread { #if MACH_LOCK_MON unsigned lock_stack; #endif + + char name[THREAD_NAME_SIZE]; }; #include <kern/cpu_number.h> |