Browse Source

UserspaceEmulator: Implement the fork() syscall :^)

Andreas Kling 5 years ago
parent
commit
b9b74e355a
2 changed files with 8 additions and 1 deletions
  1. 7 1
      DevTools/UserspaceEmulator/Emulator.cpp
  2. 1 0
      DevTools/UserspaceEmulator/Emulator.h

+ 7 - 1
DevTools/UserspaceEmulator/Emulator.cpp

@@ -349,7 +349,8 @@ u32 Emulator::virt_syscall(u32 function, u32 arg1, u32 arg2, u32 arg3)
         return virt$clock_gettime(arg1, arg2);
     case SC_getrandom:
         return virt$getrandom(arg1, arg2, arg3);
-
+    case SC_fork:
+        return virt$fork();
     default:
         dbg() << "Unimplemented syscall: " << Syscall::to_string((Syscall::Function)function);
         dump_backtrace();
@@ -866,4 +867,9 @@ int Emulator::virt$ioctl(int fd, unsigned request, FlatPtr arg)
     TODO();
 }
 
+int Emulator::virt$fork()
+{
+    return fork();
+}
+
 }

+ 1 - 0
DevTools/UserspaceEmulator/Emulator.h

@@ -70,6 +70,7 @@ private:
 
     void setup_stack(const Vector<String>& arguments, const Vector<String>& environment);
 
+    int virt$fork();
     int virt$get_dir_entries(int fd, FlatPtr buffer, ssize_t);
     int virt$ioctl(int fd, unsigned, FlatPtr);
     int virt$usleep(useconds_t);