On Mon, Jun 28, 2004 at 01:25:31PM -0700, David S. Miller wrote: > I think it's bad to just "smack this attribute onto any structure that > _MIGHT_ need it on some platform" I never do that in my drivers, > and they work on all platforms. For example, if you have a simple > DMA descriptor structure such as: > > struct txd { > u32 dma_addr; > u32 length; > }; > > It is just total and utter madness to put a packed or the proposed > __nopadding__ attribute on that structure. Yet this seems to be > what was suggested now and at the beginning of this thread. I guess, in the end, what this comes down to is the fact that we're all going to get bitten on the ass when we finally get to a platform where the default alignment is 64-bits, which would then (by default) add padding to the above structure. How long until that time comes? Likely within my lifetime, and I'd rather not have to re-write working code into more working code because I couldn't express to the compiler what I needed it to do. Yes, __packed__ is overkill, because it specifies both a no-wasted-space storage as well as the possibility of a completely unaligned pointer. __nopadding__ would, as proposed, represent what we mean more closely. Personally, I think it would be nice to see a way to mark all structures that are passed "over the wire" (regardless of if that wire is USB, PCI, or whatever), so that when we move to the FooMatic4000 arch, it will JustWork(tm) instead of being a major PITA. Matt -- Matthew Dharm Home: mdharm-usb@one-eyed-alien.net Maintainer, Linux USB Mass Storage Driver You are needink to look more evil. You likink very strong coffee? -- Pitr to Dust Puppy User Friendly, 10/16/1998