12685309fSrsc #include "types.h" 2dae9b0d4Srsc #include "x86.h" 3558ab49fSrsc #include "defs.h" 4aae4e749SCody Cutler #include "date.h" 52685309fSrsc #include "param.h" 69aa0337dSFrans Kaashoek #include "memlayout.h" 72685309fSrsc #include "mmu.h" 82685309fSrsc #include "proc.h" 92685309fSrsc 102685309fSrsc int sys_fork(void)112685309fSrscsys_fork(void) 122685309fSrsc { 1321573833Srsc return fork(); 142685309fSrsc } 152685309fSrsc 162685309fSrsc int sys_exit(void)172685309fSrscsys_exit(void) 182685309fSrsc { 195573c8f2Srsc exit(); 202685309fSrsc return 0; // not reached 212685309fSrsc } 222685309fSrsc 232685309fSrsc int sys_wait(void)242685309fSrscsys_wait(void) 252685309fSrsc { 265573c8f2Srsc return wait(); 272685309fSrsc } 282685309fSrsc 292685309fSrsc int sys_kill(void)302685309fSrscsys_kill(void) 312685309fSrsc { 322685309fSrsc int pid; 332685309fSrsc 34224f6598Srsc if(argint(0, &pid) < 0) 352685309fSrsc return -1; 365573c8f2Srsc return kill(pid); 372685309fSrsc } 382685309fSrsc 392685309fSrsc int sys_getpid(void)402685309fSrscsys_getpid(void) 412685309fSrsc { 42*abf847a0SFrans Kaashoek return myproc()->pid; 432685309fSrsc } 442685309fSrsc 452685309fSrsc int sys_sbrk(void)462685309fSrscsys_sbrk(void) 472685309fSrsc { 48224f6598Srsc int addr; 492685309fSrsc int n; 502685309fSrsc 51224f6598Srsc if(argint(0, &n) < 0) 522685309fSrsc return -1; 53*abf847a0SFrans Kaashoek addr = myproc()->sz; 54dae9b0d4Srsc if(growproc(n) < 0) 552685309fSrsc return -1; 562685309fSrsc return addr; 572685309fSrsc } 584bcd0f6aSrsc 594bcd0f6aSrsc int sys_sleep(void)60efc12b8eSrscsys_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){ 70*abf847a0SFrans Kaashoek if(myproc()->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 sys_uptime(void)83789b508dSRobert Morrissys_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