]> Zhao Yanbai Git Server - minix.git/commitdiff
Second try to fix tick delay problem ...
authorJorrit Herder <jnherder@minix3.org>
Fri, 5 Aug 2005 17:02:37 +0000 (17:02 +0000)
committerJorrit Herder <jnherder@minix3.org>
Fri, 5 Aug 2005 17:02:37 +0000 (17:02 +0000)
kernel/main.c
kernel/system/do_setalarm.c

index 5eb48cbeb96a4b5c87fb4a2b83da09a809c14b32..676fcf06e9e3256160fa6d1cde9daeaebfeaadc6 100755 (executable)
@@ -238,7 +238,7 @@ timer_t *tp;
   u16_t magic; 
 
   /* Now mask all interrupts, including the clock, and stop the clock. */
-  outb(INT_CTLMASK, ~0); 
+  outb(INT_CTLMASK, ~1); 
   clock_stop();
 
   if (mon_return && how != RBT_RESET) {
index 3e37bbd742ad117f4949fd75a93d2c0769927a98..53b2bfe1e3946adc27ef457858d6bd05171c3c3a 100644 (file)
@@ -44,10 +44,10 @@ message *m_ptr;                     /* pointer to request message */
 
   /* Return the ticks left on the previous alarm. */
   uptime = get_uptime(); 
-  if ((tp->tmr_exp_time == TMR_NEVER) || (tp->tmr_exp_time < uptime) ) {
-      m_ptr->ALRM_TIME_LEFT = 0;
-  } else {
+  if ((tp->tmr_exp_time != TMR_NEVER) && (uptime < tp->tmr_exp_time) ) {
       m_ptr->ALRM_TIME_LEFT = (tp->tmr_exp_time - uptime);
+  } else {
+      m_ptr->ALRM_TIME_LEFT = 0;
   }
 
   /* Finally, (re)set the timer depending on the expiration time. */
@@ -72,7 +72,6 @@ timer_t *tp;
  * process with a notification message from CLOCK.
  */
   int proc_nr = tmr_arg(tp)->ta_int;           /* get process number */
-  tmr_inittimer(tp);                           /* reset alarm timer */
   lock_notify(CLOCK, proc_nr);                 /* notify process */
 }