mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 11:12:45 +00:00 
			
		
		
		
	UserspaceEmulator: Implement geteuid, getegid, ptsname syscalls
This commit is contained in:
		
							parent
							
								
									c4176b0da1
								
							
						
					
					
						commit
						c8fb00fe4d
					
				
					 2 changed files with 25 additions and 0 deletions
				
			
		|  | @ -408,8 +408,12 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3) | |||
|         return virt$unveil(arg1); | ||||
|     case SC_getuid: | ||||
|         return virt$getuid(); | ||||
|     case SC_geteuid: | ||||
|         return virt$geteuid(); | ||||
|     case SC_getgid: | ||||
|         return virt$getgid(); | ||||
|     case SC_getegid: | ||||
|         return virt$getegid(); | ||||
|     case SC_setuid: | ||||
|         return virt$setuid(arg1); | ||||
|     case SC_setgid: | ||||
|  | @ -505,6 +509,8 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3) | |||
|         return virt$clock_nanosleep(arg1); | ||||
|     case SC_readlink: | ||||
|         return virt$readlink(arg1); | ||||
|     case SC_ptsname: | ||||
|         return virt$ptsname(arg1, arg2, arg3); | ||||
|     case SC_allocate_tls: | ||||
|         return virt$allocate_tls(arg1); | ||||
|     case SC_beep: | ||||
|  | @ -1061,11 +1067,21 @@ uid_t Emulator::virt$getuid() | |||
|     return getuid(); | ||||
| } | ||||
| 
 | ||||
| uid_t Emulator::virt$geteuid() | ||||
| { | ||||
|     return geteuid(); | ||||
| } | ||||
| 
 | ||||
| gid_t Emulator::virt$getgid() | ||||
| { | ||||
|     return getgid(); | ||||
| } | ||||
| 
 | ||||
| gid_t Emulator::virt$getegid() | ||||
| { | ||||
|     return getegid(); | ||||
| } | ||||
| 
 | ||||
| int Emulator::virt$setuid(uid_t uid) | ||||
| { | ||||
|     return syscall(SC_setuid, uid); | ||||
|  | @ -1690,6 +1706,12 @@ u32 Emulator::virt$allocate_tls(size_t size) | |||
|     return tls_base; | ||||
| } | ||||
| 
 | ||||
| int Emulator::virt$ptsname(int fd, FlatPtr buffer, size_t buffer_size) | ||||
| { | ||||
|     auto pts = mmu().copy_buffer_from_vm(buffer, buffer_size); | ||||
|     return syscall(SC_ptsname, fd, pts.data(), pts.size()); | ||||
| } | ||||
| 
 | ||||
| int Emulator::virt$beep() | ||||
| { | ||||
|     return syscall(SC_beep); | ||||
|  |  | |||
|  | @ -105,7 +105,9 @@ private: | |||
|     u32 virt$unveil(u32); | ||||
|     u32 virt$pledge(u32); | ||||
|     uid_t virt$getuid(); | ||||
|     uid_t virt$geteuid(); | ||||
|     gid_t virt$getgid(); | ||||
|     gid_t virt$getegid(); | ||||
|     int virt$setuid(uid_t); | ||||
|     int virt$setgid(gid_t); | ||||
|     u32 virt$read(int, FlatPtr, ssize_t); | ||||
|  | @ -163,6 +165,7 @@ private: | |||
|     int virt$watch_file(FlatPtr, size_t); | ||||
|     int virt$readlink(FlatPtr); | ||||
|     u32 virt$allocate_tls(size_t); | ||||
|     int virt$ptsname(int fd, FlatPtr buffer, size_t buffer_size); | ||||
|     int virt$beep(); | ||||
| 
 | ||||
|     FlatPtr allocate_vm(size_t size, size_t alignment); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Brendan Coles
						Brendan Coles