Messages in this thread | | | Date | Fri, 6 Feb 2009 09:26:57 +0800 | From | Wu Fengguang <> | Subject | Re: generic swap() |
| |
On Fri, Jan 16, 2009 at 10:45:36AM +0100, Peter Zijlstra wrote: > On Fri, 2009-01-16 at 01:38 -0800, Andrew Morton wrote: > > On Fri, 16 Jan 2009 10:26:34 +0100 Peter Zijlstra <peterz@infradead.org> wrote: > > > > > Hi, > > > > > > Where did this patch come from? -- I can't seem to find it on lkml at all.. > > > > That's a damn good question. I received: > > Hehe, one of the mysteries of life then :-) > > > > The reason I ask it that I wonder why swap() has a return value? > > > > Accident, I guess. > > > > > +#define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; }) > > > > You think it should use the do{}while(0) thing? > > That was what I was thinking indeed. Non of the current users appear to > make use of the (somewhat arbitrary) return value, so lets change it > before someone gets creative ;-) > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Good change, thank you Peter.
//Sorry I was not able to read this email because of VPN issues.
Fengguang
> --- > diff --git a/include/linux/kernel.h b/include/linux/kernel.h > index 343df9e..7fa3718 100644 > --- a/include/linux/kernel.h > +++ b/include/linux/kernel.h > @@ -480,7 +480,8 @@ static inline char *pack_hex_byte(char *buf, u8 byte) > /* > * swap - swap value of @a and @b > */ > -#define swap(a, b) ({ typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; }) > +#define swap(a, b) \ > + do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) > > /** > * container_of - cast a member of a structure out to the containing structure >
| |