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 { 1121573833Srsc 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 { 4048755214SRuss Cox return proc->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; 5148755214SRuss Cox addr = proc->sz; 52dae9b0d4Srsc if(growproc(n) < 0) 532685309fSrsc return -1; 542685309fSrsc return addr; 552685309fSrsc } 564bcd0f6aSrsc 574bcd0f6aSrsc int 58efc12b8eSrsc sys_sleep(void) 594bcd0f6aSrsc { 60*789b508dSRobert Morris int n; 61*789b508dSRobert Morris uint ticks0; 62efc12b8eSrsc 63efc12b8eSrsc if(argint(0, &n) < 0) 64efc12b8eSrsc return -1; 65efc12b8eSrsc acquire(&tickslock); 66efc12b8eSrsc ticks0 = ticks; 67efc12b8eSrsc while(ticks - ticks0 < n){ 6848755214SRuss Cox if(proc->killed){ 69efc12b8eSrsc release(&tickslock); 70efc12b8eSrsc return -1; 71efc12b8eSrsc } 72efc12b8eSrsc sleep(&ticks, &tickslock); 73efc12b8eSrsc } 74efc12b8eSrsc release(&tickslock); 754bcd0f6aSrsc return 0; 764bcd0f6aSrsc } 77*789b508dSRobert Morris 78*789b508dSRobert Morris // return how many clock tick interrupts have occurred 79*789b508dSRobert Morris // since boot. 80*789b508dSRobert Morris int 81*789b508dSRobert Morris sys_uptime(void) 82*789b508dSRobert Morris { 83*789b508dSRobert Morris uint xticks; 84*789b508dSRobert Morris 85*789b508dSRobert Morris acquire(&tickslock); 86*789b508dSRobert Morris xticks = ticks; 87*789b508dSRobert Morris release(&tickslock); 88*789b508dSRobert Morris return xticks; 89*789b508dSRobert Morris } 90