[PATCH V4 1/5] The macro spin_event_timeout() takes a condition and timeout value

Timur Tabi timur at freescale.com
Tue May 26 21:32:35 EST 2009


On Tue, May 26, 2009 at 2:29 AM, Geert Uytterhoeven
<Geert.Uytterhoeven at sonycom.com> wrote:

> static inline function, returning rc, instead of a macro?

It won't work as an inline function ...

>> +     unsigned long __loops = tb_ticks_per_usec * timeout;                \
>> +     unsigned long __start = get_tbl();                                  \
>> +     while ((rc = (condition)) && (tb_ticks_since(__start) <= __loops)) \

There's no way to pass a expression to an inline function.  It has to
be a macro.  Here, the loop evaluates "condition" at every pass.  If
this were an inline function, "condition" would be evaluated once when
the function were called, and never again.

-- 
Timur Tabi
Linux kernel developer at Freescale



More information about the Linuxppc-dev mailing list