UserspaceEmulator: Add SC_rmdir syscall

This commit is contained in:
Brendan Coles 2021-03-14 15:23:49 +00:00 committed by Andreas Kling
parent 202f855055
commit 1eccd78e3a
Notes: sideshowbarker 2024-07-18 21:22:02 +09:00
2 changed files with 9 additions and 0 deletions

View file

@ -123,6 +123,7 @@ private:
int virt$pipe(FlatPtr pipefd, int flags);
int virt$close(int);
int virt$mkdir(FlatPtr path, size_t path_length, mode_t mode);
int virt$rmdir(FlatPtr path, size_t path_length);
int virt$unlink(FlatPtr path, size_t path_length);
int virt$get_process_name(FlatPtr buffer, int size);
int virt$set_process_name(FlatPtr buffer, int size);

View file

@ -134,6 +134,8 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3)
return virt$fstat(arg1, arg2);
case SC_mkdir:
return virt$mkdir(arg1, arg2, arg3);
case SC_rmdir:
return virt$rmdir(arg1, arg2);
case SC_unlink:
return virt$unlink(arg1, arg2);
case SC_write:
@ -306,6 +308,12 @@ int Emulator::virt$mkdir(FlatPtr path, size_t path_length, mode_t mode)
return syscall(SC_mkdir, buffer.data(), buffer.size(), mode);
}
int Emulator::virt$rmdir(FlatPtr path, size_t path_length)
{
auto buffer = mmu().copy_buffer_from_vm(path, path_length);
return syscall(SC_rmdir, buffer.data(), buffer.size());
}
int Emulator::virt$unlink(FlatPtr path, size_t path_length)
{
auto buffer = mmu().copy_buffer_from_vm(path, path_length);