On Dec 6, 2007 6:54 PM, Andi Kleen <[EMAIL PROTECTED]> wrote: > > > +/* > > + * FIXME: Acessing the desc_struct through its fields is more elegant, > > + * and should be the one valid thing to do. However, a lot of open code > > + * still touches the a and b acessors, and doing this allow us to do it > > + * incrementally. We keep the signature as a struct, rather than an union, > > + * so we can get rid of it transparently in the future -- glommer > > + */ > > +#define raw_desc_struct struct { unsigned int a, b; } > > +#define detailed_desc_struct \ > > + struct { \ > > + u16 limit0; \ > > + u16 base0; \ > > + unsigned base1 : 8, type : 4, s : 1, dpl : 2, p : 1; \ > > + unsigned limit : 4, avl : 1, l : 1, d : 1, g : 1, base2 :8;\ > > + } > > The standard clean way to do this is with a anonymous union. It is an anonymous union.
However: * It's an union of structs * I wished to keep the toplevel type as a struct The alternative would be to write: struct desc_struct { union { struct { unsigned int a, b; }; struct { u16 limit0; u16 base0; unsigned base1 : 8, type : 4, s : 1, dpl : 2, p : 1; unsigned limit : 4, avl : 1, l : 1, d : 1, g : 1, base2 :8; }; }; }; Which is fine, it's all the same in the end. Just with more shift rights, and more visual pollution. -- Glauber de Oliveira Costa. "Free as in Freedom" http://glommer.net "The less confident you are, the more serious you have to act." -- 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/