12685309fSrsc #include "types.h" 2dae9b0d4Srsc #include "x86.h" 3558ab49fSrsc #include "defs.h" 4*aae4e749SCody Cutler #include "date.h" 52685309fSrsc #include "param.h" 69aa0337dSFrans Kaashoek #include "memlayout.h" 72685309fSrsc #include "mmu.h" 82685309fSrsc #include "proc.h" 92685309fSrsc 102685309fSrsc int 112685309fSrsc sys_fork(void) 122685309fSrsc { 1321573833Srsc return fork(); 142685309fSrsc } 152685309fSrsc 162685309fSrsc int 172685309fSrsc sys_exit(void) 182685309fSrsc { 195573c8f2Srsc exit(); 202685309fSrsc return 0; // not reached 212685309fSrsc } 222685309fSrsc 232685309fSrsc int 242685309fSrsc sys_wait(void) 252685309fSrsc { 265573c8f2Srsc return wait(); 272685309fSrsc } 282685309fSrsc 292685309fSrsc int 302685309fSrsc sys_kill(void) 312685309fSrsc { 322685309fSrsc int pid; 332685309fSrsc 34224f6598Srsc if(argint(0, &pid) < 0) 352685309fSrsc return -1; 365573c8f2Srsc return kill(pid); 372685309fSrsc } 382685309fSrsc 392685309fSrsc int 402685309fSrsc sys_getpid(void) 412685309fSrsc { 4248755214SRuss Cox return proc->pid; 432685309fSrsc } 442685309fSrsc 452685309fSrsc int 462685309fSrsc sys_sbrk(void) 472685309fSrsc { 48224f6598Srsc int addr; 492685309fSrsc int n; 502685309fSrsc 51224f6598Srsc if(argint(0, &n) < 0) 522685309fSrsc return -1; 5348755214SRuss Cox addr = proc->sz; 54dae9b0d4Srsc if(growproc(n) < 0) 552685309fSrsc return -1; 562685309fSrsc return addr; 572685309fSrsc } 584bcd0f6aSrsc 594bcd0f6aSrsc int 60efc12b8eSrsc sys_sleep(void) 614bcd0f6aSrsc { 62789b508dSRobert Morris int n; 63789b508dSRobert Morris uint ticks0; 64efc12b8eSrsc 65efc12b8eSrsc if(argint(0, &n) < 0) 66efc12b8eSrsc return -1; 67efc12b8eSrsc acquire(&tickslock); 68efc12b8eSrsc ticks0 = ticks; 69efc12b8eSrsc while(ticks - ticks0 < n){ 7048755214SRuss Cox if(proc->killed){ 71efc12b8eSrsc release(&tickslock); 72efc12b8eSrsc return -1; 73efc12b8eSrsc } 74efc12b8eSrsc sleep(&ticks, &tickslock); 75efc12b8eSrsc } 76efc12b8eSrsc release(&tickslock); 774bcd0f6aSrsc return 0; 784bcd0f6aSrsc } 79789b508dSRobert Morris 80789b508dSRobert Morris // return how many clock tick interrupts have occurred 81a4b213cfSFrans Kaashoek // since start. 82789b508dSRobert Morris int 83789b508dSRobert Morris sys_uptime(void) 84789b508dSRobert Morris { 85789b508dSRobert Morris uint xticks; 86789b508dSRobert Morris 87789b508dSRobert Morris acquire(&tickslock); 88789b508dSRobert Morris xticks = ticks; 89789b508dSRobert Morris release(&tickslock); 90789b508dSRobert Morris return xticks; 91789b508dSRobert Morris } 92