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

Timur Tabi timur at freescale.com
Tue May 26 13:32:35 CEST 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 Alsa-devel mailing list