Second try to fix tick delay problem ...
This commit is contained in:
parent
5d2588aedf
commit
1c570a7d93
@ -238,7 +238,7 @@ timer_t *tp;
|
|||||||
u16_t magic;
|
u16_t magic;
|
||||||
|
|
||||||
/* Now mask all interrupts, including the clock, and stop the clock. */
|
/* Now mask all interrupts, including the clock, and stop the clock. */
|
||||||
outb(INT_CTLMASK, ~0);
|
outb(INT_CTLMASK, ~1);
|
||||||
clock_stop();
|
clock_stop();
|
||||||
|
|
||||||
if (mon_return && how != RBT_RESET) {
|
if (mon_return && how != RBT_RESET) {
|
||||||
|
@ -44,10 +44,10 @@ message *m_ptr; /* pointer to request message */
|
|||||||
|
|
||||||
/* Return the ticks left on the previous alarm. */
|
/* Return the ticks left on the previous alarm. */
|
||||||
uptime = get_uptime();
|
uptime = get_uptime();
|
||||||
if ((tp->tmr_exp_time == TMR_NEVER) || (tp->tmr_exp_time < uptime) ) {
|
if ((tp->tmr_exp_time != TMR_NEVER) && (uptime < tp->tmr_exp_time) ) {
|
||||||
m_ptr->ALRM_TIME_LEFT = 0;
|
|
||||||
} else {
|
|
||||||
m_ptr->ALRM_TIME_LEFT = (tp->tmr_exp_time - uptime);
|
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. */
|
/* Finally, (re)set the timer depending on the expiration time. */
|
||||||
@ -72,7 +72,6 @@ timer_t *tp;
|
|||||||
* process with a notification message from CLOCK.
|
* process with a notification message from CLOCK.
|
||||||
*/
|
*/
|
||||||
int proc_nr = tmr_arg(tp)->ta_int; /* get process number */
|
int proc_nr = tmr_arg(tp)->ta_int; /* get process number */
|
||||||
tmr_inittimer(tp); /* reset alarm timer */
|
|
||||||
lock_notify(CLOCK, proc_nr); /* notify process */
|
lock_notify(CLOCK, proc_nr); /* notify process */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user