Lab1
启动xv6(难度:Easy)
sleep(难度:Easy)
// user/ulib.c
int
atoi(const char *s)
{
int n;
n = 0;
while('0' <= *s && *s <= '9')
n = n*10 + *s++ - '0';
return n;
}
// kernel/sysproc.c
uint64
sys_sleep(void)
{
int n;
uint ticks0;
if(argint(0, &n) < 0)
return -1;
acquire(&tickslock);
ticks0 = ticks;
while(ticks - ticks0 < n){
if(myproc()->killed){
release(&tickslock);
return -1;
}
sleep(&ticks, &tickslock);
}
release(&tickslock);
return 0;
}
// kernel/sysproc.h
#define SYS_sleep 13
// user/user.h提供了sleep的声明以便其他程序调用,用汇编程序编写的user/usys.S可以帮助sleep从用户区跳转到内核区。pingpong(难度:Easy)
Primes(素数,难度:Moderate/Hard)
find(难度:Moderate)
xargs (难度: Moderate)
Last updated