diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-12-22 00:10:01 -0700 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-12-22 00:10:01 -0700 |
commit | 752a4a95e3c96a8e8d3405b16d292f13e8c7856b (patch) | |
tree | 838e43696fdc45b83f082eef7230d79cfe699497 /include/xen/interface/io/ring.h | |
parent | bc3f67a3e1b20756d4bfa5886a6b8fd0c068e6a4 (diff) | |
parent | 90a8a73c06cc32b609a880d48449d7083327e11a (diff) |
Merge commit 'v2.6.37-rc7' into spi/next
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. |