12685309fSrsc #include "types.h" 2dae9b0d4Srsc #include "x86.h" 3558ab49fSrsc #include "defs.h" 42685309fSrsc #include "param.h" 59aa0337dSFrans Kaashoek #include "memlayout.h" 62685309fSrsc #include "mmu.h" 72685309fSrsc #include "proc.h" 82685309fSrsc 92685309fSrsc int 102685309fSrsc sys_fork(void) 112685309fSrsc { 1221573833Srsc return fork(); 132685309fSrsc } 142685309fSrsc 152685309fSrsc int 162685309fSrsc sys_exit(void) 172685309fSrsc { 185573c8f2Srsc exit(); 192685309fSrsc return 0; // not reached 202685309fSrsc } 212685309fSrsc 222685309fSrsc int 232685309fSrsc sys_wait(void) 242685309fSrsc { 255573c8f2Srsc return wait(); 262685309fSrsc } 272685309fSrsc 282685309fSrsc int 292685309fSrsc sys_kill(void) 302685309fSrsc { 312685309fSrsc int pid; 322685309fSrsc 33224f6598Srsc if(argint(0, &pid) < 0) 342685309fSrsc return -1; 355573c8f2Srsc return kill(pid); 362685309fSrsc } 372685309fSrsc 382685309fSrsc int 392685309fSrsc sys_getpid(void) 402685309fSrsc { 4148755214SRuss Cox return proc->pid; 422685309fSrsc } 432685309fSrsc 442685309fSrsc int 452685309fSrsc sys_sbrk(void) 462685309fSrsc { 47224f6598Srsc int addr; 482685309fSrsc int n; 492685309fSrsc 50224f6598Srsc if(argint(0, &n) < 0) 512685309fSrsc return -1; 5248755214SRuss Cox addr = proc->sz; 53dae9b0d4Srsc if(growproc(n) < 0) 542685309fSrsc return -1; 552685309fSrsc return addr; 562685309fSrsc } 574bcd0f6aSrsc 584bcd0f6aSrsc int 59efc12b8eSrsc sys_sleep(void) 604bcd0f6aSrsc { 61789b508dSRobert Morris int n; 62789b508dSRobert Morris uint ticks0; 63efc12b8eSrsc 64efc12b8eSrsc if(argint(0, &n) < 0) 65efc12b8eSrsc return -1; 66efc12b8eSrsc acquire(&tickslock); 67efc12b8eSrsc ticks0 = ticks; 68efc12b8eSrsc while(ticks - ticks0 < n){ 6948755214SRuss Cox if(proc->killed){ 70efc12b8eSrsc release(&tickslock); 71efc12b8eSrsc return -1; 72efc12b8eSrsc } 73efc12b8eSrsc sleep(&ticks, &tickslock); 74efc12b8eSrsc } 75efc12b8eSrsc release(&tickslock); 764bcd0f6aSrsc return 0; 774bcd0f6aSrsc } 78789b508dSRobert Morris 79789b508dSRobert Morris // return how many clock tick interrupts have occurred 80*a4b213cfSFrans Kaashoek // since start. 81789b508dSRobert Morris int 82789b508dSRobert Morris sys_uptime(void) 83789b508dSRobert Morris { 84789b508dSRobert Morris uint xticks; 85789b508dSRobert Morris 86789b508dSRobert Morris acquire(&tickslock); 87789b508dSRobert Morris xticks = ticks; 88789b508dSRobert Morris release(&tickslock); 89789b508dSRobert Morris return xticks; 90789b508dSRobert Morris } 91