Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758012AbXHBNHb (ORCPT ); Thu, 2 Aug 2007 09:07:31 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752690AbXHBNHU (ORCPT ); Thu, 2 Aug 2007 09:07:20 -0400 Received: from mail-gw3.sa.ew.hu ([212.108.200.82]:41857 "EHLO mail-gw3.sa.ew.hu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752812AbXHBNHS (ORCPT ); Thu, 2 Aug 2007 09:07:18 -0400 To: jengelh@computergmbh.de CC: adobriyan@gmail.com, miklos@szeredi.hu, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, torvalds@linux-foundation.org In-reply-to: (message from Jan Engelhardt on Thu, 2 Aug 2007 14:24:44 +0200 (CEST)) Subject: Re: [PATCH] type safe allocator References: Message-Id: From: Miklos Szeredi Date: Thu, 02 Aug 2007 15:06:54 +0200 Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1127 Lines: 34 > On Aug 2 2007 16:04, Alexey Dobriyan wrote: > >On 8/2/07, Miklos Szeredi wrote: > >> fooptr = kmalloc(sizeof(struct foo), ...); > > > >Key word is "traditional". Good traditional form which even half-competent > >C programmers immediately parse in retina. > > And being aware of the potential type-unsafety makes programmers more > careful IMHO. That's a _really_ good reason ;) > >> +/** > >> + * alloc_struct - allocate given type object > >> + * @type: the type of the object to allocate > >> + * @flags: the type of memory to allocate. > >> + */ > >> +#define alloc_struct(type, flags) ((type *) kmalloc(sizeof(type), flags)) > > >someone will write alloc_struct(int, GFP_KERNEL), I promise. > > and someone else will write > > struct complexthing foo; > alloc_struct(foo, GFP_KERNEL); And the compiler will complain like mad about that. Miklos - 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/