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
10int
11sys_fork(void)
12{
13 return fork();
14}
15
16int
17sys_exit(void)
18{
19 exit();
20 return 0; // not reached
21}
22
23int
24sys_wait(void)
25{
26 return wait();
27}
28
29int
30sys_kill(void)
31{
32 int pid;
33
34 if(argint(0, &pid) < 0)
35 return -1;
36 return kill(pid);
37}
38
39int
40sys_getpid(void)
41{
42 return myproc()->pid;
43}
44
45int
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
59int
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.
82int
83sys_uptime(void)
84{
85 uint xticks;
86
87 acquire(&tickslock);
88 xticks = ticks;
89 release(&tickslock);
90 return xticks;
91}
92