[alsa-devel] [PATCH V4 1/5] The macro spin_event_timeout() takes a condition and timeout value
Geert Uytterhoeven
Geert.Uytterhoeven at sonycom.com
Tue May 26 13:51:47 CEST 2009
On Tue, 26 May 2009, Timur Tabi wrote:
> 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.
You're right, I missed that part. Sorry about that.
However, you can still improve useability by making the macro return the rc,
instead of letting the caller pass it, cfr. wait_event_timeout() and friends.
With kind regards,
Geert Uytterhoeven
Software Architect
Techsoft Centre
Technology and Software Centre Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven at sonycom.com
Internet: http://www.sony-europe.com/
A division of Sony Europe (Belgium) N.V.
VAT BE 0413.825.160 · RPR Brussels
Fortis · BIC GEBABEBB · IBAN BE41293037680010
More information about the Alsa-devel
mailing list