1 #include "types.h" 2 #include "x86.h" 3 #include "defs.h" 4 #include "date.h" 5 #include "param.h" 6 #include "memlayout.h" 7 #include "mmu.h" 8 #include "proc.h" 9 10 int sys_fork(void)11sys_fork(void) 12 { 13 return fork(); 14 } 15 16 int sys_exit(void)17sys_exit(void) 18 { 19 exit(); 20 return 0; // not reached 21 } 22 23 int sys_wait(void)24sys_wait(void) 25 { 26 return wait(); 27 } 28 29 int sys_kill(void)30sys_kill(void) 31 { 32 int pid; 33 34 if(argint(0, &pid) < 0) 35 return -1; 36 return kill(pid); 37 } 38 39 int sys_getpid(void)40sys_getpid(void) 41 { 42 return myproc()->pid; 43 } 44 45 int sys_sbrk(void)46sys_sbrk(void) 47 { 48 int addr; 49 int n; 50 51 if(argint(0, &n) < 0) 52 return -1; 53 addr = myproc()->sz; 54 if(growproc(n) < 0) 55 return -1; 56 return addr; 57 } 58 59 int sys_sleep(void)60sys_sleep(void) 61 { 62 int n; 63 uint ticks0; 64 65 if(argint(0, &n) < 0) 66 return -1; 67 acquire(&tickslock); 68 ticks0 = ticks; 69 while(ticks - ticks0 < n){ 70 if(myproc()->killed){ 71 release(&tickslock); 72 return -1; 73 } 74 sleep(&ticks, &tickslock); 75 } 76 release(&tickslock); 77 return 0; 78 } 79 80 // return how many clock tick interrupts have occurred 81 // since start. 82 int sys_uptime(void)83sys_uptime(void) 84 { 85 uint xticks; 86 87 acquire(&tickslock); 88 xticks = ticks; 89 release(&tickslock); 90 return xticks; 91 } 92