On Sun, Sep 23, 2007 at 10:05:05AM -0700, Linus Torvalds wrote: > > > On Sun, 23 Sep 2007, Arnaldo Carvalho de Melo wrote: > > > > bzero! That is it, its nothing new, just a sane name to something [..] > > No, please no! > > The BSD memory functions are nasty. If you do bzero, you logically should > do the others too, and they are way inferior to the standard ones. Let's > not go there. > > Besides, if we want to avoid mistakes, I would suggest going to a much > higher level. Ie more along the lines of also fixing the size and > alignment, and using something like > > #define memclear(p) memset(p, 0, sizeof(*(p)))
I don't like it when macros magically do sizeof(*p), because people often think that the macro is smarter than it really is, and you commonly end up with code looking like this : char *p; ... p = kmalloc(n); ... memclear(p); This can happen for instance when replacing a stack-allocated buffer with a malloc because it became too big for the stack. Such a mistake is *very hard* to detect by human eye, while having "sizeof(*p)" in the same function as "char *p" will trigger some automatisms in most readers' brains. > because if you actually do something like > > git grep 'memset.*,[ ]*0[ ]*,' > > (those [..] things contatain a space and a tab), you'll see that a *lot* > of them share that pattern. At least current code is still greppable for such usages. Doing too much magics with macros often harms debugging. I could agree with having a macro to force the pattern to '0', but not to force the size. > Not that I think it's really worth it. I don't think either. Willy - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/