From efc12b8e616ed3394468c1802da8e1f39e387cd3 Mon Sep 17 00:00:00 2001 From: rsc Date: Mon, 27 Aug 2007 13:34:35 +0000 Subject: Replace yield system call with sleep. --- sysproc.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'sysproc.c') diff --git a/sysproc.c b/sysproc.c index 8cf3291..48fbe37 100644 --- a/sysproc.c +++ b/sysproc.c @@ -70,8 +70,21 @@ sys_sbrk(void) } int -sys_yield(void) +sys_sleep(void) { - yield(); + int n, ticks0; + + if(argint(0, &n) < 0) + return -1; + acquire(&tickslock); + ticks0 = ticks; + while(ticks - ticks0 < n){ + if(cp->killed){ + release(&tickslock); + return -1; + } + sleep(&ticks, &tickslock); + } + release(&tickslock); return 0; } -- cgit v1.2.3