/SPARTAN/trunk/src/time/delay.c |
---|
42,12 → 42,15 |
*/ |
void delay(__u32 usec) |
{ |
pri_t pri; |
ipl_t ipl; |
/* The delay loop is calibrated for each and every |
CPU in the system. Therefore it is necessary to |
cpu_priority_high() before calling the asm_delay_loop(). */ |
pri = cpu_priority_high(); |
/* |
* The delay loop is calibrated for each and every |
* CPU in the system. Therefore it is necessary to |
* call interrupts_disable() before calling the |
* asm_delay_loop(). |
*/ |
ipl = interrupts_disable(); |
asm_delay_loop(usec * CPU->delay_loop_const); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
} |
/SPARTAN/trunk/src/time/timeout.c |
---|
100,10 → 100,10 |
{ |
timeout_t *hlp; |
link_t *l, *m; |
pri_t pri; |
ipl_t ipl; |
__u64 sum; |
pri = cpu_priority_high(); |
ipl = interrupts_disable(); |
spinlock_lock(&CPU->timeoutlock); |
spinlock_lock(&t->lock); |
152,7 → 152,7 |
spinlock_unlock(&t->lock); |
spinlock_unlock(&CPU->timeoutlock); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
} |
168,19 → 168,19 |
{ |
timeout_t *hlp; |
link_t *l; |
pri_t pri; |
ipl_t ipl; |
grab_locks: |
pri = cpu_priority_high(); |
ipl = interrupts_disable(); |
spinlock_lock(&t->lock); |
if (!t->cpu) { |
spinlock_unlock(&t->lock); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
return false; |
} |
if (!spinlock_trylock(&t->cpu->timeoutlock)) { |
spinlock_unlock(&t->lock); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
goto grab_locks; |
} |
203,6 → 203,6 |
timeout_reinitialize(t); |
spinlock_unlock(&t->lock); |
cpu_priority_restore(pri); |
interrupts_restore(ipl); |
return true; |
} |
/SPARTAN/trunk/src/time/clock.c |
---|
44,7 → 44,7 |
/** Clock routine |
* |
* Clock routine executed from clock interrupt handler |
* (assuming cpu_priority_high()). Runs expired timeouts |
* (assuming interrupts_disable()'d). Runs expired timeouts |
* and preemptive scheduling. |
* |
*/ |