00001 #include "types.h" 00002 #include "x86.h" 00003 #include "defs.h" 00004 #include "param.h" 00005 #include "mmu.h" 00006 #include "proc.h" 00007 00008 int 00009 sys_fork(void) 00010 { 00011 return fork(); 00012 } 00013 00014 int 00015 sys_exit(void) 00016 { 00017 exit(); 00018 return 0; // not reached 00019 } 00020 00021 int 00022 sys_wait(void) 00023 { 00024 return wait(); 00025 } 00026 00027 int 00028 sys_kill(void) 00029 { 00030 int pid; 00031 00032 if(argint(0, &pid) < 0) 00033 return -1; 00034 return kill(pid); 00035 } 00036 00037 int 00038 sys_getpid(void) 00039 { 00040 return proc->pid; 00041 } 00042 00043 int 00044 sys_sbrk(void) 00045 { 00046 int addr; 00047 int n; 00048 00049 if(argint(0, &n) < 0) 00050 return -1; 00051 addr = proc->sz; 00052 if(growproc(n) < 0) 00053 return -1; 00054 return addr; 00055 } 00056 00057 int 00058 sys_sleep(void) 00059 { 00060 int n, ticks0; 00061 00062 if(argint(0, &n) < 0) 00063 return -1; 00064 acquire(&tickslock); 00065 ticks0 = ticks; 00066 while(ticks - ticks0 < n){ 00067 if(proc->killed){ 00068 release(&tickslock); 00069 return -1; 00070 } 00071 sleep(&ticks, &tickslock); 00072 } 00073 release(&tickslock); 00074 return 0; 00075 }
1.5.6