This source file includes following definitions.
- sys_exit
- sys_getpid
- sys_fork
- sys_wait
- sys_sbrk
- sys_pause
- sys_kill
- sys_uptime
1 #include "types.h"
2 #include "riscv.h"
3 #include "defs.h"
4 #include "param.h"
5 #include "memlayout.h"
6 #include "spinlock.h"
7 #include "proc.h"
8 #include "vm.h"
9
10 uint64
11 sys_exit(void)
12 {
13 int n;
14 argint(0, &n);
15 kexit(n);
16 return 0;
17 }
18
19 uint64
20 sys_getpid(void)
21 {
22 return myproc()->pid;
23 }
24
25 uint64
26 sys_fork(void)
27 {
28 return kfork();
29 }
30
31 uint64
32 sys_wait(void)
33 {
34 uint64 p;
35 argaddr(0, &p);
36 return kwait(p);
37 }
38
39 uint64
40 sys_sbrk(void)
41 {
42 uint64 addr;
43 int t;
44 int n;
45
46 argint(0, &n);
47 argint(1, &t);
48 addr = myproc()->sz;
49
50 if(t == SBRK_EAGER || n < 0) {
51 if(growproc(n) < 0) {
52 return -1;
53 }
54 } else {
55
56
57
58 if(addr + n < addr)
59 return -1;
60 myproc()->sz += n;
61 }
62 return addr;
63 }
64
65 uint64
66 sys_pause(void)
67 {
68 int n;
69 uint ticks0;
70
71 argint(0, &n);
72 if(n < 0)
73 n = 0;
74 acquire(&tickslock);
75 ticks0 = ticks;
76 while(ticks - ticks0 < n){
77 if(killed(myproc())){
78 release(&tickslock);
79 return -1;
80 }
81 sleep(&ticks, &tickslock);
82 }
83 release(&tickslock);
84 return 0;
85 }
86
87 uint64
88 sys_kill(void)
89 {
90 int pid;
91
92 argint(0, &pid);
93 return kkill(pid);
94 }
95
96
97
98 uint64
99 sys_uptime(void)
100 {
101 uint xticks;
102
103 acquire(&tickslock);
104 xticks = ticks;
105 release(&tickslock);
106 return xticks;
107 }