diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 0223f2f4b87c03..4c1abb76c311d3 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -450,46 +450,6 @@ int Process::sys$execve(const char* filename, const char** argv, const char** en return rc; } -pid_t Process::sys$spawn(const char* filename, const char** argv, const char** envp) -{ - VALIDATE_USER_READ(filename, strlen(filename)); - if (argv) { - for (size_t i = 0; argv[i]; ++i) { - VALIDATE_USER_READ(argv[i], strlen(argv[i])); - } - } - if (envp) { - for (size_t i = 0; envp[i]; ++i) { - VALIDATE_USER_READ(envp[i], strlen(envp[i])); - } - } - - String path(filename); - auto parts = path.split('/'); - - Vector arguments; - if (argv) { - for (size_t i = 0; argv[i]; ++i) { - arguments.append(argv[i]); - } - } else { - arguments.append(parts.last()); - } - - Vector environment; - if (envp) { - for (size_t i = 0; envp[i]; ++i) { - environment.append(envp[i]); - } - } - - int error; - auto* child = create_user_process(path, m_uid, m_gid, m_pid, error, move(arguments), move(environment), m_tty); - if (child) - return child->pid(); - return error; -} - Process* Process::create_user_process(const String& path, uid_t uid, gid_t gid, pid_t parent_pid, int& error, Vector&& arguments, Vector&& environment, TTY* tty) { // FIXME: Don't split() the path twice (sys$spawn also does it...) diff --git a/Kernel/Process.h b/Kernel/Process.h index b57eddde76e43d..2cbdc59b1925dc 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -135,7 +135,6 @@ class Process : public InlineLinkedListNode { int sys$geterror() { return m_error; } void sys$exit(int status) NORETURN; void sys$sigreturn() NORETURN; - pid_t sys$spawn(const char* path, const char** args, const char** envp); pid_t sys$waitpid(pid_t, int* wstatus, int options); void* sys$mmap(const Syscall::SC_mmap_params*); int sys$munmap(void*, size_t size); diff --git a/Kernel/Syscall.cpp b/Kernel/Syscall.cpp index fbf41acba2be35..639e3ad407621d 100644 --- a/Kernel/Syscall.cpp +++ b/Kernel/Syscall.cpp @@ -58,8 +58,6 @@ static DWORD handle(RegisterDump& regs, DWORD function, DWORD arg1, DWORD arg2, return current->sys$sleep((unsigned)arg1); case Syscall::SC_gettimeofday: return current->sys$gettimeofday((timeval*)arg1); - case Syscall::SC_spawn: - return current->sys$spawn((const char*)arg1, (const char**)arg2, (const char**)arg3); case Syscall::SC_get_dir_entries: return current->sys$get_dir_entries((int)arg1, (void*)arg2, (size_t)arg3); case Syscall::SC_lstat: diff --git a/Kernel/Syscall.h b/Kernel/Syscall.h index c680cd0a31b627..81fe7967325bb7 100644 --- a/Kernel/Syscall.h +++ b/Kernel/Syscall.h @@ -3,7 +3,6 @@ #include #define ENUMERATE_SYSCALLS \ - __ENUMERATE_SYSCALL(spawn) \ __ENUMERATE_SYSCALL(sleep) \ __ENUMERATE_SYSCALL(yield) \ __ENUMERATE_SYSCALL(putch) \ diff --git a/LibC/Makefile b/LibC/Makefile index 34ff1b5abb9a97..fd35ae7286c85e 100644 --- a/LibC/Makefile +++ b/LibC/Makefile @@ -9,7 +9,6 @@ LIBC_OBJS = \ stdio.o \ unistd.o \ string.o \ - process.o \ mman.o \ dirent.o \ stdlib.o \ diff --git a/LibC/process.cpp b/LibC/process.cpp deleted file mode 100644 index 65d82c0009f31e..00000000000000 --- a/LibC/process.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "process.h" -#include "errno.h" -#include - -extern "C" { - -int spawn(const char* path, const char** args, const char** envp) -{ - int rc = Syscall::invoke(Syscall::SC_spawn, (dword)path, (dword)args, (dword)envp); - __RETURN_WITH_ERRNO(rc, rc, -1); -} - -} - diff --git a/LibC/process.h b/LibC/process.h deleted file mode 100644 index aa2a1d9f5a3c99..00000000000000 --- a/LibC/process.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -#include -#include - -__BEGIN_DECLS - -pid_t spawn(const char* path, const char** args, const char** envp); - -__END_DECLS - diff --git a/Userland/sh.cpp b/Userland/sh.cpp index ca45d313026315..a5f4e5260b8b86 100644 --- a/Userland/sh.cpp +++ b/Userland/sh.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include