mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-24 21:45:20 +00:00
Kernel+LibC: Add sys$set_process_name() for changing the process name
This commit is contained in:
parent
0b287c18b9
commit
b5f54d4153
Notes:
sideshowbarker
2024-07-19 04:33:36 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/b5f54d4153d
5 changed files with 22 additions and 1 deletions
|
@ -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 {
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -683,6 +683,12 @@ int get_process_name(char* buffer, int buffer_size)
|
|||
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||
}
|
||||
|
||||
int set_process_name(const char* name, size_t name_length)
|
||||
{
|
||||
int rc = syscall(SC_set_process_name, name, name_length);
|
||||
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||
}
|
||||
|
||||
int chroot(const char* path)
|
||||
{
|
||||
return chroot_with_mount_flags(path, -1);
|
||||
|
|
|
@ -55,6 +55,7 @@ __BEGIN_DECLS
|
|||
extern char** environ;
|
||||
|
||||
int get_process_name(char* buffer, int buffer_size);
|
||||
int set_process_name(const char* name, size_t name_length);
|
||||
void dump_backtrace();
|
||||
int fsync(int fd);
|
||||
void sysbeep();
|
||||
|
|
Loading…
Add table
Reference in a new issue