1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:37:35 +00:00

Kernel+LibC: Add sys$set_process_name() for changing the process name

This commit is contained in:
Andreas Kling 2020-07-27 18:42:10 +02:00
parent 0b287c18b9
commit b5f54d4153
5 changed files with 22 additions and 1 deletions

View file

@ -192,7 +192,8 @@ namespace Kernel {
__ENUMERATE_SYSCALL(minherit) \
__ENUMERATE_SYSCALL(sendfd) \
__ENUMERATE_SYSCALL(recvfd) \
__ENUMERATE_SYSCALL(sysconf)
__ENUMERATE_SYSCALL(sysconf) \
__ENUMERATE_SYSCALL(set_process_name)
namespace Syscall {

View file

@ -4489,6 +4489,18 @@ int Process::sys$get_process_name(char* buffer, int buffer_size)
return 0;
}
int Process::sys$set_process_name(const char* user_name, size_t user_name_length)
{
REQUIRE_PROMISE(proc);
if (user_name_length > 256)
return -ENAMETOOLONG;
auto name = validate_and_copy_string_from_user(user_name, user_name_length);
if (name.is_null())
return -EFAULT;
m_name = move(name);
return 0;
}
// We don't use the flag yet, but we could use it for distinguishing
// random source like Linux, unlike the OpenBSD equivalent. However, if we
// do, we should be able of the caveats that Linux has dealt with.

View file

@ -185,6 +185,7 @@ public:
int sys$sync();
int sys$beep();
int sys$get_process_name(char* buffer, int buffer_size);
int sys$set_process_name(const char* user_name, size_t user_name_length);
int sys$watch_file(const char* path, size_t path_length);
int sys$dbgputch(u8);
int sys$dbgputstr(const u8*, int length);