From: Andrew Morton <akpm@zip.com.au>
To: Christoph Hellwig <hch@caldera.de>
Cc: Robert Love <rml@tech9.net>, David Howells <dhowells@redhat.com>,
torvalds@transmeta.com, arjanv@redhat.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] preempt abstraction
Date: Tue, 08 Jan 2002 12:52:18 -0800 [thread overview]
Message-ID: <3C3B5C02.9929B8@zip.com.au> (raw)
In-Reply-To: <10940.1010511619@warthog.cambridge.redhat.com> <1010516250.3229.21.camel@phantasy>, <1010516250.3229.21.camel@phantasy>; from rml@tech9.net on Tue, Jan 08, 2002 at 01:57:28PM -0500 <20020108195920.A14642@caldera.de>
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;
}
...
}
next prev parent reply other threads:[~2002-01-08 20:59 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-08 17:40 [PATCH] preempt abstraction David Howells
2002-01-08 18:13 ` Jeff Garzik
2002-01-08 18:57 ` Robert Love
2002-01-08 18:59 ` Christoph Hellwig
2002-01-08 20:52 ` Andrew Morton [this message]
2002-01-08 21:25 ` Roger Larsson
2002-01-08 22:12 ` Daniel Phillips
2002-01-08 22:35 ` David Howells
2002-01-08 22:46 ` David Howells
2002-01-08 23:05 ` Robert Love
2002-01-08 21:30 ` Robert Love
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3C3B5C02.9929B8@zip.com.au \
--to=akpm@zip.com.au \
--cc=arjanv@redhat.com \
--cc=dhowells@redhat.com \
--cc=hch@caldera.de \
--cc=linux-kernel@vger.kernel.org \
--cc=rml@tech9.net \
--cc=torvalds@transmeta.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.