From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750803AbVHHKL2 (ORCPT ); Mon, 8 Aug 2005 06:11:28 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750802AbVHHKL2 (ORCPT ); Mon, 8 Aug 2005 06:11:28 -0400 Received: from ns.suse.de ([195.135.220.2]:58028 "EHLO mx1.suse.de") by vger.kernel.org with ESMTP id S1750803AbVHHKL1 (ORCPT ); Mon, 8 Aug 2005 06:11:27 -0400 Date: Mon, 08 Aug 2005 12:11:21 +0200 Message-ID: From: Takashi Iwai To: Adrian Bunk Cc: Pekka J Enberg , Andrew Morton , linux-kernel@vger.kernel.org, pmarques@grupopie.com Subject: Re: [PATCH] kernel: use kcalloc instead kmalloc/memset In-Reply-To: <20050806150940.GT4029@stusta.de> References: <1123219747.20398.1.camel@localhost> <20050804223842.2b3abeee.akpm@osdl.org> <20050804233634.1406e92a.akpm@osdl.org> <20050806150940.GT4029@stusta.de> User-Agent: Wanderlust/2.12.0 (Your Wildest Dreams) SEMI/1.14.6 (Maruoka) FLIM/1.14.7 (=?ISO-8859-4?Q?Sanj=F2?=) APEL/10.6 MULE XEmacs/21.5 (beta18) (chestnut) (+CVS-20041021) (i386-suse-linux) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org At Sat, 6 Aug 2005 17:09:40 +0200, Adrian Bunk wrote: > > On Fri, Aug 05, 2005 at 09:52:32AM +0300, Pekka J Enberg wrote: > >... > > --- 2.6.orig/mm/slab.c > > +++ 2.6/mm/slab.c > > @@ -2555,6 +2555,20 @@ void kmem_cache_free(kmem_cache_t *cache > > EXPORT_SYMBOL(kmem_cache_free); > > > > /** > > + * kzalloc - allocate memory. The memory is set to zero. > > + * @size: how many bytes of memory are required. > > + * @flags: the type of memory to allocate. > > + */ > > +void *kzalloc(size_t size, unsigned int __nocast flags) > > +{ > > + void *ret = kmalloc(size, flags); > > + if (ret) > > + memset(ret, 0, size); > > + return ret; > > +} > > +EXPORT_SYMBOL(kzalloc); > > + > > +/** > > * kcalloc - allocate memory for an array. The memory is set to zero. > > * @n: number of elements. > > * @size: element size. > > @@ -2567,10 +2581,7 @@ void *kcalloc(size_t n, size_t size, uns > > if (n != 0 && size > INT_MAX / n) > > return ret; > > > > - ret = kmalloc(n * size, flags); > > - if (ret) > > - memset(ret, 0, n * size); > > - return ret; > > + return kzalloc(n * size, flags); > > } > > EXPORT_SYMBOL(kcalloc); > > > Looking at how few is left from kcalloc, can't we make it a > "static inline" function in slab.h? > > This would optimize nicely for all of the users where the first or even > the first two parameters are constant at compile-time and shouldn't do > much harm for the other users. > > As a side effect, the difference between kcalloc(1, ...) and kzalloc() > would become a coding style question without any effect on the generated > code. How about to use __builtin_constant_p() like kmalloc? The code readability would be worsen, though... Takashi