From 8249c086c3b33cdd586afaf88bb7afe7791869eb Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 9 Nov 2018 10:22:14 +0100 Subject: [PATCH] Get rid of redundant sys$spawn now that we have fork+exec. --- Kernel/Process.cpp | 40 ---------------------------------------- Kernel/Process.h | 1 - Kernel/Syscall.cpp | 2 -- Kernel/Syscall.h | 1 - LibC/Makefile | 1 - LibC/process.cpp | 14 -------------- LibC/process.h | 11 ----------- Userland/sh.cpp | 1 - 8 files changed, 71 deletions(-) delete mode 100644 LibC/process.cpp delete mode 100644 LibC/process.h diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 0223f2f4b8..4c1abb76c3 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 b57eddde76..2cbdc59b19 100644 --- a/Kernel/Process.h +++ b/Kernel/Process.h @@ -135,7 +135,6 @@ public: 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 fbf41acba2..639e3ad407 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 c680cd0a31..81fe796732 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 34ff1b5abb..fd35ae7286 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 65d82c0009..0000000000 --- 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 aa2a1d9f5a..0000000000 --- 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 ca45d31302..a5f4e5260b 100644 --- a/Userland/sh.cpp +++ b/Userland/sh.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include