lkml.org 
[lkml]   [2009]   [Jan]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    SubjectRe: generic swap()
    From
    Date
    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>
    ---
    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



    \
     
     \ /
      Last update: 2009-01-16 10:49    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean