diff options
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/chdir.c | 3 | ||||
-rw-r--r-- | sys/src/chdirfd.c | 8 | ||||
-rw-r--r-- | sys/src/exec.c | 8 | ||||
-rw-r--r-- | sys/src/fork.c | 8 | ||||
-rw-r--r-- | sys/src/internal.h | 1 |
5 files changed, 27 insertions, 1 deletions
diff --git a/sys/src/chdir.c b/sys/src/chdir.c index fd1385d..d64446a 100644 --- a/sys/src/chdir.c +++ b/sys/src/chdir.c @@ -3,5 +3,6 @@ int sys·chdir(char *path) { - return syscall(·Chdir, path); + intptr ret = syscall(·Chdir, path); + return error(ret); } diff --git a/sys/src/chdirfd.c b/sys/src/chdirfd.c new file mode 100644 index 0000000..ad84d2b --- /dev/null +++ b/sys/src/chdirfd.c @@ -0,0 +1,8 @@ +#include "internal.h" + +int +sys·chdirfd(int fd) +{ + intptr ret = syscall(·FChdir, fd); + return error(ret); +} diff --git a/sys/src/exec.c b/sys/src/exec.c new file mode 100644 index 0000000..d00e9dd --- /dev/null +++ b/sys/src/exec.c @@ -0,0 +1,8 @@ +#include "internal.h" + +int +sys·exec(char *prog, char *argv[], char *env[]) +{ + intptr ret = syscall(·ExecVe, prog, argv, env); + return error(ret); +} diff --git a/sys/src/fork.c b/sys/src/fork.c new file mode 100644 index 0000000..c33caa2 --- /dev/null +++ b/sys/src/fork.c @@ -0,0 +1,8 @@ +#include "internal.h" + +int +sys·fork(void) +{ + intptr ret = syscall(·Fork); + return error(ret); +} diff --git a/sys/src/internal.h b/sys/src/internal.h index bf3d0ec..e8bb76c 100644 --- a/sys/src/internal.h +++ b/sys/src/internal.h @@ -4,6 +4,7 @@ #include <sys.h> #include <syscall.h> +#define syscall0(n) _syscall0(n) #define syscall1(n,a1) _syscall1(n,sysarg(a1)) #define syscall2(n,a1,a2) _syscall2(n,sysarg(a1),sysarg(a2)) #define syscall3(n,a1,a2,a3) _syscall3(n,sysarg(a1),sysarg(a2),sysarg(a3)) |