shithub: riscv

Download patch

ref: 5d9deb77e9664cb173869e6d16f7faa117be6c55
parent: 01b4c2a63dac5a244d20d3d06b44c4072227f19a
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Wed Sep 7 21:28:34 EDT 2016

kernel: make sure procalarm() remaining time doesnt become negative

--- a/sys/src/9/port/alarm.c
+++ b/sys/src/9/port/alarm.c
@@ -63,14 +63,20 @@
 	Proc **l, *f;
 	ulong when, old;
 
+	when = MACHP(0)->ticks;
 	old = up->alarm;
-	if(old)
-		old = tk2ms(old - MACHP(0)->ticks);
+	if(old) {
+		old -= when;
+		if((long)old > 0)
+			old = tk2ms(old);
+		else
+			old = 0;
+	}
 	if(time == 0) {
 		up->alarm = 0;
 		return old;
 	}
-	when = ms2tk(time)+MACHP(0)->ticks;
+	when += ms2tk(time);
 	if(when == 0)
 		when = 1;