• Ingo Molnar's avatar
    [PATCH] preempt cleanup · 3365d167
    Ingo Molnar authored
    This is another generic fallout from the voluntary-preempt patchset: a
    cleanup of the cond_resched() infrastructure, in preparation of the latency
    reduction patches.  The changes:
    
     - uninline cond_resched() - this makes the footprint smaller,
       especially once the number of cond_resched() points increase.
    
     - add a 'was rescheduled' return value to cond_resched. This makes it
       symmetric to cond_resched_lock() and later latency reduction patches
       rely on the ability to tell whether there was any preemption.
    
     - make cond_resched() more robust by using the same mechanism as
       preempt_kernel(): by using PREEMPT_ACTIVE. This preserves the task's
       state - e.g. if the task is in TASK_ZOMBIE but gets preempted via
       cond_resched() just prior scheduling off then this approach preserves
       TASK_ZOMBIE.
    
     - the patch also adds need_lockbreak() which critical sections can use 
       to detect lock-break requests.
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    3365d167
sched.c 117 KB