Re: [PATCH] preempt abstraction

From: Andrew Morton (akpm@zip.com.au)
Date: Tue Jan 08 2002 - 15:52:18 EST


Christoph Hellwig wrote:
>
> On Tue, Jan 08, 2002 at 01:57:28PM -0500, Robert Love wrote:
> > Why not use the more commonly named conditional_schedule instead of
> > preempt() ? In addition to being more in-use (low-latency, lock-break,
> > and Andrea's aa patch all use it) I think it better conveys its meaning,
> > which is a schedule() but only conditionally.
>
> I think the choice is very subjective, but I prefer preempt().
> It's nicely short to type (!) and similar in spirit to Ingo's yield()..
>

naah. preempt() means preempt. But the implementation
is in fact maybe_preempt(), or preempt_if_needed().

I use (verbosely) (simplified):

#define conditional_schedule_needed() unlikely(current->need_resched)
#define unconditional_schedule() do {
                                                __set_current_state(TASK_RUNNING)
                                                schedule();
                                        } while(0);
#define conditional_schedule() if (conditional_schedule_needed())
                                                unconditional_schedule();

...

foo()
{
        ...
        conditional_schedule();
        ...
}

bar()
{
        ...
        if (conditional_schedule_needed()) {
                spin_unlock(&piggy_lock);
                unconditional_schedule();
                spin_lock(&piggy_lock);
                goto clean_up_mess;
        }
        ...
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jan 15 2002 - 21:00:23 EST