/** * @file * * Fool OS - System Call Interface * =============================== * * Most of the syscalls are loosely based on a very small subset of the * linux system calls. * * They seem enough to back a small C Library as newlib in this case. * * */ #define SYSCALL_EXIT 60 #define SYSCALL_EXECVE 64 #define SYSCALL_FORK 72 #define SYSCALL_CLOSE 66 #define SYSCALL_OPEN 65 #define SYSCALL_GETPID 78 #define SYSCALL_ISATTY 68 // linux?? #define SYSCALL_LINK 82 #define SYSCALL_LSEEK 69 #define SYSCALL_READ 62 #define SYSCALL_SBRK 70 #define SYSCALL_STAT 74 // need all? #define SYSCALL_FSTAT 67 // need all? #define SYSCALL_LSTAT 79 // need all? #define SYSCALL_TIMES 75 #define SYSCALL_UNLINK 76 #define SYSCALL_WAIT 77 #define SYSCALL_WRITE 61 #define SYSCALL_GETTIMEOFDAY 71 #define SYSCALL_READDIR 63 // linux has getdents #define SYSCALL_KILL 73 #define SYSCALL_CLONE 83 #define SYSCALL_PIPE 84 #define SYSCALL_DUP2 86 /** Todo move somewhere else and init per process , think how to make thread safe */ void fd_init_std_streams(uint32_t pid); /** returns string representation of the syscall from its number */ char* syscall_get_name(uint32_t num); /** invoke a syscall from kernel */ uint32_t syscall_generic(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid); /** test if a specific syscall is ready to be processed */ uint32_t syscall_generic_test(uint32_t nr,uint32_t p1, uint32_t p2, uint32_t p3, uint32_t pid); // new planned syscalls for graphx // TODO: split ncurses and our syscalls?? // int syscall_create_win("title"); // int syscall_kill_win(int descriptor); // int syscall_update_win(int descriptor, *mem, *rect); // int syscall_callback(*func, ON_MOUSE); // int syscall_sleep();