On Tue, Nov 06, 2007 at 08:42:48AM +0100, Franck Bui-Huu wrote: > > Older gcc used to generate significantly worse code for inline functions > > than for macros so Linux became a fairly excessive user of macros. This > > has very much improved since, so these days inlines are prefered over > > macros where possible. > > Yes but ISTR that gcc generates some calls to memset and since > builtin functions are disabled the final link failed if memset > is inlined. I'll try to reproduce... So both belt and suspenders then that is an inline/macro plus an outline version? > >> Yes I noticed this. Actually I'm wondering if we couldn't add a new > >> function, fill_user() like the following: > >> > >> extern size_t fill_user(void __user *to, int c, size_t len); > > > > That's much better function name than the old __bzero - except that > > Actually I named it '__fill_user', since it doesn't call access_ok(). > > > __bzero effectivly took a long argument for the 2nd argument so 32-bit > > on 32-bit kernels and 64-bit on 64-bit kernels. > > Isn't size_t meaning ? > > Perhaps in this case __kernel_size_t is better... I wrote about the existing __bzero which takes the size_t length as third argument and a long sized fill pattern as the second. > Yes I have a patchset which clean up a bit uaccess.h and does this but > it's under construction. It actually tries to convert all macros into > inlines and the file is much more readable and as a bonus side we could > easily add __must_check annotations which are currently missing. > > I'll try to finish it this week but in the meantime can we just kill > __bzero or do you want me to include it in the future patchset ? There is enough time until 2.6.25 to complete your cleanups; no more cleanups for 2.6.24. Ralf