sysdeps/lemon: pipe, fork, get(e)gid

This commit is contained in:
JJ 2021-05-17 10:22:02 +10:00
parent 684a29fff2
commit 2f76d0b455
3 changed files with 31 additions and 4 deletions

View file

@ -348,5 +348,9 @@ namespace mlibc{
return 0; return 0;
} }
int sys_pipe(int *fds, int flags){
return -syscall(SYS_PIPE, fds, flags);
}
#endif #endif
} }

View file

@ -72,6 +72,10 @@ namespace mlibc{
pid_t pid = _pid; pid_t pid = _pid;
return pid; return pid;
} }
pid_t sys_getppid(){
return syscall(SYS_GETPPID);
}
int sys_clock_get(int clock, time_t *secs, long *nanos) { int sys_clock_get(int clock, time_t *secs, long *nanos) {
uint64_t _secs, _millis; uint64_t _secs, _millis;
@ -113,13 +117,11 @@ namespace mlibc{
} }
gid_t sys_getgid(){ gid_t sys_getgid(){
mlibc::infoLogger() << "mlibc: sys_getgid is a stub" << frg::endlog; return syscall(SYS_GETGID);
return 0;
} }
gid_t sys_getegid(){ gid_t sys_getegid(){
mlibc::infoLogger() << "mlibc: sys_getegid is a stub" << frg::endlog; return syscall(SYS_GETEGID);
return 0;
} }
int sys_setgid(gid_t gid){ int sys_setgid(gid_t gid){
@ -164,5 +166,20 @@ namespace mlibc{
return 0; return 0;
} }
int sys_fork(pid_t *child){
long pid = syscall(SYS_FORK, 0);
if(pid < 0){
errno = pid;
return -1;
}
*child = pid;
return 0;
}
int sys_execve(const char *path, char *const argv[], char *const envp[]){
return -syscall(SYS_EXECVE, path, argv, envp);
}
#endif #endif
} }

View file

@ -13,6 +13,7 @@
#define SYS_CREATE 8 #define SYS_CREATE 8
#define SYS_LINK 9 #define SYS_LINK 9
#define SYS_UNLINK 10 #define SYS_UNLINK 10
#define SYS_EXECVE 11
#define SYS_CHDIR 12 #define SYS_CHDIR 12
#define SYS_TIME 13 #define SYS_TIME 13
#define SYS_MAP_FB 14 #define SYS_MAP_FB 14
@ -92,6 +93,11 @@
#define SYS_INTERRUPT_THREAD 90 #define SYS_INTERRUPT_THREAD 90
#define SYS_LOAD_KERNEL_MODULE 91 #define SYS_LOAD_KERNEL_MODULE 91
#define SYS_UNLOAD_KERNEL_MODULE 92 #define SYS_UNLOAD_KERNEL_MODULE 92
#define SYS_FORK 93
#define SYS_GETGID 94
#define SYS_GETEGID 95
#define SYS_GETPPID 96
#define SYS_PIPE 97
#ifdef __cplusplus #ifdef __cplusplus
extern "C"{ extern "C"{