Re: [PATCH 1/5] lib: introduce call_once()

Andrew Morton
2008-03-11T19:11:50Z

On Tue, 11 Mar 2008 11:56:55 -0700
Joe Perches <joe@perches.com> wrote:

> On Tue, 2008-03-11 at 10:35 -0700, Andrew Morton wrote:
> > #define ONCE() \
> > ({ \
> > static long flag; \
> > \
> > return !test_and_set_bit(0, flag); \
> > })
>
> test_and_set_bit takes an address

duh.

> Perhaps:
>
> #define DO_ONCE(x) \
> ({ static long flag; if (test_and_set_bit(0, &flag)) x; 1; })
>
> DO_ONCE(foo);

No, that's completely unnecessary and would produce nasty-looking code.
Take a look at some of the wait_event monstrosities we have.

I'm not sure that we need any of this once() stuff really.