diff --git a/headers/private/kernel/ksyscalls.h b/headers/private/kernel/ksyscalls.h index 79dffba91e..b3ea9fc62b 100755 --- a/headers/private/kernel/ksyscalls.h +++ b/headers/private/kernel/ksyscalls.h @@ -150,6 +150,7 @@ enum { SYSCALL_SET_REAL_TIME_CLOCK, SYSCALL_DEBUG_OUTPUT, SYSCALL_GET_SYSTEM_INFO, /* 140 */ + SYSCALL_RENAME_THREAD }; int syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_ret); diff --git a/headers/private/kernel/syscalls.h b/headers/private/kernel/syscalls.h index 433f1b1836..066aa06de7 100644 --- a/headers/private/kernel/syscalls.h +++ b/headers/private/kernel/syscalls.h @@ -51,6 +51,7 @@ extern thread_id _kern_spawn_thread(int32 (*func)(thread_func, void *), const ch extern thread_id _kern_find_thread(const char *name); extern status_t _kern_suspend_thread(thread_id thread); extern status_t _kern_resume_thread(thread_id thread); +extern status_t _kern_rename_thread(thread_id thread, const char *newName); extern status_t _kern_set_thread_priority(thread_id thread, int32 newPriority); extern status_t _kern_kill_thread(thread_id thread); extern void _kern_exit_thread(status_t returnValue); diff --git a/headers/private/kernel/thread.h b/headers/private/kernel/thread.h index 5f46d09876..52fb8cb98f 100755 --- a/headers/private/kernel/thread.h +++ b/headers/private/kernel/thread.h @@ -57,6 +57,7 @@ status_t _user_set_thread_priority(thread_id thread, int32 newPriority); status_t _user_rename_thread(thread_id thread, const char *name); status_t _user_suspend_thread(thread_id thread); status_t _user_resume_thread(thread_id thread); +status_t _user_rename_thread(thread_id thread, const char *name); thread_id _user_spawn_thread(thread_func func, const char *name, int32 priority, void *arg1, void *arg2); status_t _user_wait_for_thread(thread_id id, status_t *_returnCode); status_t _user_snooze_etc(bigtime_t timeout, int timebase, uint32 flags); diff --git a/src/kernel/core/syscalls.c b/src/kernel/core/syscalls.c index 0bce01ce52..9fef5f2d49 100644 --- a/src/kernel/core/syscalls.c +++ b/src/kernel/core/syscalls.c @@ -295,6 +295,9 @@ syscall_dispatcher(unsigned long call_num, void *arg_buffer, uint64 *call_ret) case SYSCALL_RESUME_THREAD: *call_ret = _user_resume_thread((thread_id)arg0); break; + case SYSCALL_RENAME_THREAD: + *call_ret = _user_rename_thread((thread_id)arg0, (const char *)arg1); + break; case SYSCALL_SEND_DATA: *call_ret = _user_send_data((thread_id)arg0, (int32)arg1, (const void *)arg2, (size_t)arg3); break; diff --git a/src/kernel/libroot/os/syscalls.S b/src/kernel/libroot/os/syscalls.S index 3b5b5b2977..d631cc7a61 100644 --- a/src/kernel/libroot/os/syscalls.S +++ b/src/kernel/libroot/os/syscalls.S @@ -98,6 +98,7 @@ SYSCALL5(_kern_spawn_thread, 35) SYSCALL1(_kern_kill_thread, 36) SYSCALL1(_kern_suspend_thread, 37) SYSCALL1(_kern_resume_thread, 38) +SYSCALL2(_kern_rename_thread, 141) SYSCALL4(_kern_snooze_etc, 17) SYSCALL4(_kern_send_data, 94) SYSCALL3(_kern_receive_data, 95) diff --git a/src/kernel/libroot/os/thread.c b/src/kernel/libroot/os/thread.c index b5b5909133..ad7e52f672 100644 --- a/src/kernel/libroot/os/thread.c +++ b/src/kernel/libroot/os/thread.c @@ -1,4 +1,4 @@ -/* +/* ** Copyright 2002-2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. ** Distributed under the terms of the OpenBeOS License. */ @@ -80,8 +80,7 @@ find_thread(const char *name) status_t rename_thread(thread_id thread, const char *name) { - // ToDo: rename_thread not implemented - return B_ERROR; + return _kern_rename_thread(thread, name); }