From 3bba2df34be1680777ff85ad4fbc43717609ec75 Mon Sep 17 00:00:00 2001 From: Miguel Date: Thu, 13 Sep 2018 14:40:09 +0200 Subject: thinking about syscalls and newlib ... --- interface/syscalls.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 interface/syscalls.c (limited to 'interface/syscalls.c') diff --git a/interface/syscalls.c b/interface/syscalls.c new file mode 100644 index 0000000..11304a8 --- /dev/null +++ b/interface/syscalls.c @@ -0,0 +1,126 @@ +#include + +#include +#include +#include + +#include "fs.h" +#include "syscalls.h" + +extern char **environ; +// TODO: errno! + +int _readdir(const char *name,fs_dirent *dirs,int max) +{ + return syscall(SYSCALL_READDIR,name,dirs,max); +} + +int _poll(int file) +{ + return syscall(SYSCALL_POLL,file,0,0); +} + +void _exit(int ret) +{ + return syscall(SYSCALL_EXIT,ret,environ,0); +} + +int _close(int file) +{ + return syscall(SYSCALL_CLOSE,file,0,0); +} + +int _isatty(int file) +{ + return syscall(SYSCALL_ISATTY,file,0,0); +} + +int _lseek(int file, int ptr, int dir) +{ + return syscall(SYSCALL_LSEEK,file,ptr,dir); +} + +int _read(int file, char *ptr, int len) +{ + return syscall(SYSCALL_READ,file,ptr,len); +} + +int _open(const char *name, int flags, int mode) +{ + return syscall(SYSCALL_OPEN,name,flags,mode); +} + +int _write(int file, char *ptr, int len) +{ + return syscall(SYSCALL_WRITE,file,ptr,len); +} + +int _execve(char *name, char **argv, char **env) +{ + return syscall(SYSCALL_EXECVE,name,argv,env); +} + +uint32_t _sbrk(int incr) +{ + return syscall(SYSCALL_SBRK,incr,0,0); +} + +int _gettimeofday(struct timeval *tv, void *tz) +{ + return syscall(SYSCALL_GETTIMEOFDAY,tv,tz,0); +} + +int _fork(void) +{ + return syscall(SYSCALL_FORK,0,0,0); +} + +int _clone(void) +{ + return syscall(SYSCALL_CLONE,0,0,0); +} + +int _getpid(void) +{ + return syscall(SYSCALL_GETPID,0,0,0); +} + +int _kill(int pid, int sig) +{ + return syscall(SYSCALL_KILL,pid,sig,0); +} + +int _link(char *old, char *ne) +{ + return syscall(SYSCALL_LINK,old,ne,0); +} + +int _unlink(char *name) +{ + return syscall(SYSCALL_UNLINK,name,0,0); +} + +int _times(struct tms *buf) +{ + return syscall(SYSCALL_TIMES,buf,0,0); +} + +int _wait(int *status) +{ + return syscall(SYSCALL_WAIT,status,0,0); +} + +int _stat(const char *file, struct stat *st) +{ + return syscall(SYSCALL_STAT,file,st,0); +} + +int _lstat(const char *file, struct stat *st) +{ + return syscall(SYSCALL_LSTAT,file,st,0); +} + +int _fstat(int file, struct stat *st) +{ + return syscall(SYSCALL_FSTAT,file,st,0); +} -- cgit v1.2.3