Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Mon, 28 Oct 2002 18:36:23 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Mon, 28 Oct 2002 18:36:23 -0500 Received: from x35.xmailserver.org ([208.129.208.51]:23448 "EHLO x35.xmailserver.org") by vger.kernel.org with ESMTP id ; Mon, 28 Oct 2002 18:36:22 -0500 X-AuthUser: davidel@xmailserver.org Date: Mon, 28 Oct 2002 15:52:07 -0800 (PST) From: Davide Libenzi X-X-Sender: davide@blue1.dev.mcafeelabs.com To: Rusty Russell cc: Hugh Dickins , mingming cao , Andrew Morton , Linux Kernel Mailing List Subject: Re: [PATCH]updated ipc lock patch In-Reply-To: <20021028233518.0F5FF2C0FE@lists.samba.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1953 Lines: 54 On Tue, 29 Oct 2002, Rusty Russell wrote: > In message yo > u write: > > On Mon, 28 Oct 2002, Rusty Russell wrote: > > > > > I think it's clearer *why* it's being done than: > > > > > > struct ipc_rcu_kmalloc > > > { > > > struct rcu_head rcu; > > > } __attribute__((aligned(__alignof__(void *)))); > > > > Well, not really Rusty. The above syntax uses documented gcc features > > already used inside the kernel, while the fact that void *data[0]; > > enforces alignment it is not ( to my knowledge ) documented anywhere. > > You can also avoid the comment using the aligned syntax ... > > A comment is definitely required: you must say *why* you are aligning > the structure (a clearer comment would be better, of course): > > /* We return a pointer after the structure to the unwitting > caller: ensure safe alignment. */ > > The alignment of a structure member of type X is the alignment of type > X: this seems obvious to me. And "type X data[0];" is the standard > way of representing a variable struct. > > Have we picked all the nits yet? 8) Rusty, I give you two reason why you should be using the gcc documented "aligned" features :) 1) using "void *data[0];" and expecting an alignement, being undocumented, will force not obvious constraints for the gcc folks 2) I was looking at my latest copy of the ISO standard, section : 6.7.5.2 "Array declarators" - Point 1) where it is explicitly declared that the constant expression that declared the size of the array must be greater then zero Looking at how gcc folks is driving towards standards I will expect them screaming at you in a near future :) - Davide - 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/