123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #include "types.h"
- #include "arm.h"
- #include "defs.h"
- #include "param.h"
- #include "memlayout.h"
- #include "mmu.h"
- #include "proc.h"
- int
- sys_fork(void)
- {
- return fork();
- }
- int
- sys_exit(void)
- {
- exit();
- return 0; // not reached
- }
- int
- sys_wait(void)
- {
- return wait();
- }
- int
- sys_kill(void)
- {
- int pid;
- if(argint(0, &pid) < 0)
- return -1;
- return kill(pid);
- }
- int
- sys_getpid(void)
- {
- return curr_proc->pid;
- }
- int
- sys_sbrk(void)
- {
- int addr;
- int n;
- if(argint(0, &n) < 0)
- return -1;
- addr = curr_proc->sz;
- if(growproc(n) < 0)
- return -1;
- return addr;
- }
- int
- sys_sleep(void)
- {
- int n;
- uint ticks0;
-
- if(argint(0, &n) < 0)
- return -1;
- acquire(&tickslock);
- ticks0 = ticks;
- while(ticks - ticks0 < n){
- if(curr_proc->killed){
- release(&tickslock);
- return -1;
- }
- sleep(&ticks, &tickslock);
- }
- release(&tickslock);
- return 0;
- }
- // return how many clock tick interrupts have occurred
- // since start.
- int
- sys_uptime(void)
- {
- uint xticks;
-
- acquire(&tickslock);
- xticks = ticks;
- release(&tickslock);
- return xticks;
- }
|