From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony Liguori Subject: Re: non-ANSI Unions Date: Fri, 23 Mar 2007 10:41:39 -0500 Message-ID: <4603F533.5070003@us.ibm.com> References: <4603F338.6050507@cea.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4603F338.6050507@cea.fr> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: PUCCETTI Armand Cc: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org PUCCETTI Armand wrote: > Many "unions' are present in the code, but are non-ANSI! Anonymous unions/structs are a rather common C extension. They are much preferred to using a named union for the syntactical convenience of writing: page_info.list vs writing: page_info.u.list Also, this is not the only C extension that Xen utilizes. If your analysis tool doesn't support the various GCC extensions, then it's not going to be much help. Regards, Anthony Liguori > For instance, I see: > > struct page_info > { > /* Each frame can be threaded onto a doubly-linked list. */ > union { > struct list_head list; > /* Shadow uses this field as an up-pointer in lower-level shadows */ > paddr_t up; > }; > /* Reference count and various PGC_xxx flags and fields. */ > u32 count_info; > ...} > > which should be written properly: > > struct page_info > { > /* Each frame can be threaded onto a doubly-linked list. */ > union { > struct list_head list; > /* Shadow uses this field as an up-pointer in lower-level shadows */ > paddr_t up; > } foo; > > /* Reference count and various PGC_xxx flags and fields. */ > u32 count_info; > ...} > > Is there any good reason to do so? Is it possible to change that, to > comply with the standard > (and therefore with analysis tools too) ? > > Armand