mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	Kernel+LibC: Add sys$set_process_name() for changing the process name
This commit is contained in:
		
							parent
							
								
									0b287c18b9
								
							
						
					
					
						commit
						b5f54d4153
					
				
					 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
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling