Messages in this thread | | | Subject | Re: [PATCH tracing/kprobes] kprobes: Disable booster when CONFIG_PREEMPT=y | From | Peter Zijlstra <> | Date | Fri, 29 Jan 2010 18:15:38 +0100 |
| |
On Fri, 2010-01-29 at 12:08 -0500, Mathieu Desnoyers wrote: > > If a task is set as stopped, and the preempted before calling schedule, > can this result in a preempted task staying in that state for an > arbitrary long period of time ? Or is there some mechanism prohibiting > that in the scheduler ?
PREEMPT_ACTIVE does that:
preempt_schedule() add_preempt_count(PREEMPT_ACTIVE); schedule();
schedule() if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { if (unlikely(signal_pending_state(prev->state, prev))) prev->state = TASK_RUNNING; else deactivate_task(rq, prev, 1); switch_count = &prev->nvcsw; }
| |