diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-12-19 18:35:08 +0300 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-12-19 18:35:14 +0300 |
commit | ca680888d5d0d03862ec311a83c6a1c7a1e00a01 (patch) | |
tree | bc2a1777f1d715f947fa77940ebce5c43029b37b /include/xen/interface/io/ring.h | |
parent | 40dc11ffb35e8c4e8fa71092048e0f8de9db758c (diff) | |
parent | b0c3844d8af6b9f3f18f31e1b0502fbefa2166be (diff) | |
download | linux-ca680888d5d0d03862ec311a83c6a1c7a1e00a01.tar.xz |
Merge commit 'v2.6.37-rc6' into sched/core
Merge reason: Update to the latest -rc.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/xen/interface/io/ring.h')
-rw-r--r-- | include/xen/interface/io/ring.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/xen/interface/io/ring.h b/include/xen/interface/io/ring.h index e8cbf431c8cc..75271b9a8f61 100644 --- a/include/xen/interface/io/ring.h +++ b/include/xen/interface/io/ring.h @@ -24,8 +24,15 @@ typedef unsigned int RING_IDX; * A ring contains as many entries as will fit, rounded down to the nearest * power of two (so we can mask with (size-1) to loop around). */ -#define __RING_SIZE(_s, _sz) \ - (__RD32(((_sz) - (long)&(_s)->ring + (long)(_s)) / sizeof((_s)->ring[0]))) +#define __CONST_RING_SIZE(_s, _sz) \ + (__RD32(((_sz) - offsetof(struct _s##_sring, ring)) / \ + sizeof(((struct _s##_sring *)0)->ring[0]))) + +/* + * The same for passing in an actual pointer instead of a name tag. + */ +#define __RING_SIZE(_s, _sz) \ + (__RD32(((_sz) - (long)&(_s)->ring + (long)(_s)) / sizeof((_s)->ring[0]))) /* * Macros to make the correct C datatypes for a new kind of ring. |