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;