[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.64.0610281238460.3849@g5.osdl.org>
Date: Sat, 28 Oct 2006 12:41:50 -0700 (PDT)
From: Linus Torvalds <torvalds@...l.org>
To: "Adam J. Richter" <adam@...drasil.com>
cc: akpm@...l.org, bunk@...sta.de, greg@...ah.com,
linux-kernel@...r.kernel.org, linux-pci@...ey.karlin.mff.cuni.cz,
matthew@....cx, pavel@....cz, shemminger@...l.org
Subject: Re: [patch] drivers: wait for threaded probes between initcall levels
On Sat, 28 Oct 2006, Adam J. Richter wrote:
> On Fri, 27 Oct 2006 13:42:44 -0700 (PDT), Linus Torvals wrote:
> > static struct semaphore outstanding;
> [...]
> > static void allow_parallel(int n)
> [...]
> > static void wait_for_parallel(int n)
> [...]
> > static void execute_in_parallel(int (*fn)(void *), void *arg)
>
> This interface would have problems with nesting.
You miss the point.
They _wouldn't_ be nested.
The "allow_parallel()" and "wait_for_parallel()" calls would be at some
top-level situation (ie initcalls looping).
Nobody else than the top level would _ever_ use them. Anything under that
level would just say "I want to do this in parallel" - which is just a
statement, and has no nesting issues in itself.
The whole notion of "I want to do this in parallel" is basically
non-nesting. If something is parallel, it's by definition not ordered, and
thus nesting cannot make sense. All the "ordered" stuff would be either
done without using "execute_in_parallel()" at all, or it would be ordered
_within_ one thread that is executed in parallel.
Linus
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists