12685309fSrsc #include "types.h" 2dae9b0d4Srsc #include "x86.h" 3558ab49fSrsc #include "defs.h" 42685309fSrsc #include "param.h" 52685309fSrsc #include "mmu.h" 62685309fSrsc #include "proc.h" 72685309fSrsc 82685309fSrsc int 92685309fSrsc sys_fork(void) 102685309fSrsc { 11*21573833Srsc return fork(); 122685309fSrsc } 132685309fSrsc 142685309fSrsc int 152685309fSrsc sys_exit(void) 162685309fSrsc { 175573c8f2Srsc exit(); 182685309fSrsc return 0; // not reached 192685309fSrsc } 202685309fSrsc 212685309fSrsc int 222685309fSrsc sys_wait(void) 232685309fSrsc { 245573c8f2Srsc return wait(); 252685309fSrsc } 262685309fSrsc 272685309fSrsc int 282685309fSrsc sys_kill(void) 292685309fSrsc { 302685309fSrsc int pid; 312685309fSrsc 32224f6598Srsc if(argint(0, &pid) < 0) 332685309fSrsc return -1; 345573c8f2Srsc return kill(pid); 352685309fSrsc } 362685309fSrsc 372685309fSrsc int 382685309fSrsc sys_getpid(void) 392685309fSrsc { 40b6095304Srsc return cp->pid; 412685309fSrsc } 422685309fSrsc 432685309fSrsc int 442685309fSrsc sys_sbrk(void) 452685309fSrsc { 46224f6598Srsc int addr; 472685309fSrsc int n; 482685309fSrsc 49224f6598Srsc if(argint(0, &n) < 0) 502685309fSrsc return -1; 51dae9b0d4Srsc addr = cp->sz; 52dae9b0d4Srsc if(growproc(n) < 0) 532685309fSrsc return -1; 542685309fSrsc return addr; 552685309fSrsc } 564bcd0f6aSrsc 574bcd0f6aSrsc int 58efc12b8eSrsc sys_sleep(void) 594bcd0f6aSrsc { 60efc12b8eSrsc int n, ticks0; 61efc12b8eSrsc 62efc12b8eSrsc if(argint(0, &n) < 0) 63efc12b8eSrsc return -1; 64efc12b8eSrsc acquire(&tickslock); 65efc12b8eSrsc ticks0 = ticks; 66efc12b8eSrsc while(ticks - ticks0 < n){ 67efc12b8eSrsc if(cp->killed){ 68efc12b8eSrsc release(&tickslock); 69efc12b8eSrsc return -1; 70efc12b8eSrsc } 71efc12b8eSrsc sleep(&ticks, &tickslock); 72efc12b8eSrsc } 73efc12b8eSrsc release(&tickslock); 744bcd0f6aSrsc return 0; 754bcd0f6aSrsc } 76