Messages in this thread | | | Subject | Re: {put,get}_user() side effects | Date | Tue, 06 Apr 2004 16:53:11 -0400 | From | Horst von Brand <> |
| |
Geert Uytterhoeven <geert@linux-m68k.org> said: > On Tue, 6 Apr 2004, Andi Kleen wrote: > > Geert Uytterhoeven <geert@linux-m68k.org> writes: > > > On most (all?) architectures {get,put}_user() has side effects: > > > > > > #define put_user(x,ptr) \ > > > __put_user_check((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr))) > > > > Neither typeof not sizeof are supposed to have side effects. If your > > compiler generates them that's a compiler bug.
> From a simple compile test, you seem to be right... Weird, since it does > expand to 3 times 'pIndex++', but pIndex is incremented only once.
Better check with a C language lawyer. Maybe gcc gets it wrong, or it is undefined (in which case next gcc could screw you over, and give you a hard time finding out how...). An inline should be safe, and unless gcc still gets them wrong, equally fast/small. -- Dr. Horst H. von Brand User #22616 counter.li.org Departamento de Informatica Fono: +56 32 654431 Universidad Tecnica Federico Santa Maria +56 32 654239 Casilla 110-V, Valparaiso, Chile Fax: +56 32 797513 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |