patch-2.1.127 linux/arch/alpha/kernel/osf_sys.c

Next file: linux/arch/alpha/kernel/sys_sio.c
Previous file: linux/arch/alpha/defconfig
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.126/linux/arch/alpha/kernel/osf_sys.c linux/arch/alpha/kernel/osf_sys.c
@@ -1306,6 +1306,7 @@
 {
 	struct timeval tmp;
 	unsigned long ticks;
+	unsigned long tmp_timeout;
 
 	if (get_tv32(&tmp, sleep))
 		goto fault;
@@ -1313,18 +1314,11 @@
 	ticks = tmp.tv_usec;
 	ticks = (ticks + (1000000 / HZ) - 1) / (1000000 / HZ);
 	ticks += tmp.tv_sec * HZ;
-	current->timeout = ticks + jiffies;
-	current->state = TASK_INTERRUPTIBLE;
 
-	schedule();
+	current->state = TASK_INTERRUPTIBLE;
+	ticks = schedule_timeout(ticks);
 
 	if (remain) {
-		ticks = jiffies;
-		if (ticks < current->timeout)
-			ticks = current->timeout - ticks;
-		else
-			ticks = 0;
-		current->timeout = 0;
 		tmp.tv_sec = ticks / HZ;
 		tmp.tv_usec = ticks % HZ;
 		if (put_tv32(remain, &tmp))

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov