Messages in this thread | | | Date | Sat, 07 Dec 2002 15:29:16 -0800 | From | Andrew Morton <> | Subject | Re: [RFC][PATCH] net drivers and cache alignment |
| |
Jeff Garzik wrote: > > David S. Miller wrote: > > Can't the cacheline_aligned attribute be applied to individual > > struct members? I remember doing this for thread_struct on > > sparc ages ago. > > Looks like it from the 2.4 processor.h code. > > Attached is cut #2. Thanks for all the near-instant feedback so far :) > Andrew, does the attached still need padding on SMP?
It needs padding _only_ on SMP. ____cacheline_aligned_in_smp.
#define offsetof(t, m) ((int)(&((t *)0)->m))
struct foo { int a; int b __attribute__((__aligned__(1024))); int c; } foo;
main() { printf("%d\n", sizeof(struct foo)); printf("%d\n", offsetof(struct foo, a)); printf("%d\n", offsetof(struct foo, b)); printf("%d\n", offsetof(struct foo, c)); }
./a.out 2048 0 1024 1028
So your patch will do what you want it to do. You should just tag the first member of a group with ____cacheline_aligned_in_smp, and keep an eye on things with offsetof().
Not sure why sizeof() returned 2048 though. - 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/
| |