]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
Provide a variant of __RING_SIZE() that is an integer constant
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 24 Feb 2010 11:05:02 +0000 (11:05 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 24 Feb 2010 11:05:02 +0000 (11:05 +0000)
expression

Without that, gcc 4.5 won't compile (at least) netfront, where this is
being used to specify array sizes.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
drivers/xen/blkfront/block.h
drivers/xen/blktap/blktap.c
drivers/xen/blktap2/blktap.h
drivers/xen/netback/common.h
drivers/xen/netfront/netfront.h
drivers/xen/scsifront/common.h
include/xen/interface/io/ring.h
include/xen/interface/io/usbif.h

index a50be77e46db08145ad57a8d1f4220eeb8cda39c..df5a43cd8d692fb61e4dfb24abc3defdf85c6d64 100644 (file)
@@ -87,7 +87,7 @@ struct blk_shadow {
        unsigned long frame[BLKIF_MAX_SEGMENTS_PER_REQUEST];
 };
 
-#define BLK_RING_SIZE __RING_SIZE((blkif_sring_t *)0, PAGE_SIZE)
+#define BLK_RING_SIZE __CONST_RING_SIZE(blkif, PAGE_SIZE)
 
 /*
  * We have one of these per vbd, whether ide, scsi or 'other'.  They
index eec9f6ebc8dc77e2b48b144228e13339b8a2a29d..ab8574354cc6e1b690ba06f4e868f53425245f19 100644 (file)
@@ -70,7 +70,7 @@
  * mmap_alloc is initialised to 2 and should be adjustable on the fly via
  * sysfs.
  */
-#define BLK_RING_SIZE          __RING_SIZE((blkif_sring_t *)0, PAGE_SIZE)
+#define BLK_RING_SIZE          __CONST_RING_SIZE(blkif, PAGE_SIZE)
 #define MAX_DYNAMIC_MEM                BLK_RING_SIZE
 #define MAX_PENDING_REQS       BLK_RING_SIZE
 #define MMAP_PAGES (MAX_PENDING_REQS * BLKIF_MAX_SEGMENTS_PER_REQUEST)
index 5e616f4e9f14d236eb8f8bc95625874d81fef990..d691bdf4645d8df62c57d51abc7bbc93125feb8c 100644 (file)
@@ -69,7 +69,7 @@ extern int blktap_debug_level;
  * mmap_alloc is initialised to 2 and should be adjustable on the fly via
  * sysfs.
  */
-#define BLK_RING_SIZE          __RING_SIZE((blkif_sring_t *)0, PAGE_SIZE)
+#define BLK_RING_SIZE          __CONST_RING_SIZE(blkif, PAGE_SIZE)
 #define MAX_DYNAMIC_MEM                BLK_RING_SIZE
 #define MAX_PENDING_REQS       BLK_RING_SIZE
 #define MMAP_PAGES (MAX_PENDING_REQS * BLKIF_MAX_SEGMENTS_PER_REQUEST)
index a93e6f77bda49f0d77c166a7bf39eeded010a15c..570569383e3d80cdcedc4b4f521e769f2feab68a 100644 (file)
@@ -177,8 +177,8 @@ extern
 void netif_accel_init(void);
 
 
-#define NET_TX_RING_SIZE __RING_SIZE((netif_tx_sring_t *)0, PAGE_SIZE)
-#define NET_RX_RING_SIZE __RING_SIZE((netif_rx_sring_t *)0, PAGE_SIZE)
+#define NET_TX_RING_SIZE __CONST_RING_SIZE(netif_tx, PAGE_SIZE)
+#define NET_RX_RING_SIZE __CONST_RING_SIZE(netif_rx, PAGE_SIZE)
 
 void netif_disconnect(netif_t *netif);
 
index 72d0183e2fcc071c426abcdd5fbdf70d64f62ce3..1279365bc5ea13feda538f25cf8faf0719085451 100644 (file)
@@ -38,8 +38,8 @@
 #include <linux/skbuff.h>
 #include <linux/list.h>
 
-#define NET_TX_RING_SIZE __RING_SIZE((struct netif_tx_sring *)0, PAGE_SIZE)
-#define NET_RX_RING_SIZE __RING_SIZE((struct netif_rx_sring *)0, PAGE_SIZE)
+#define NET_TX_RING_SIZE __CONST_RING_SIZE(netif_tx, PAGE_SIZE)
+#define NET_RX_RING_SIZE __CONST_RING_SIZE(netif_rx, PAGE_SIZE)
 
 #include <xen/xenbus.h>
 
index 3b5ce14410ce8f632fc2962035d2828396370f3e..5fd050ce3a6be0fe067f6a4e63fef5fc149b3c5a 100644 (file)
@@ -70,8 +70,7 @@
 #define VSCSIIF_MAX_TARGET          64
 #define VSCSIIF_MAX_LUN             255
 
-#define VSCSIIF_RING_SIZE      \
-    __RING_SIZE((struct vscsiif_sring *)0, PAGE_SIZE)
+#define VSCSIIF_RING_SIZE      __CONST_RING_SIZE(vscsiif, PAGE_SIZE)
 #define VSCSIIF_MAX_REQS       VSCSIIF_RING_SIZE
 
 struct vscsifrnt_shadow {
index 3c56bc2d62e634d73a9b5bdf9afee83a18e5134d..0880b1c52ef465d0aae27190adac0f09522b73f9 100644 (file)
@@ -50,6 +50,12 @@ 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 __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])))
 
index 91e82b88298fb87976d77fbe959f1f5588bccdcc..6099c29baa8a3e7cf3460a6ee3ed2ab7ac330111 100644 (file)
@@ -128,7 +128,7 @@ struct usbif_urb_response {
 typedef struct usbif_urb_response usbif_urb_response_t;
 
 DEFINE_RING_TYPES(usbif_urb, struct usbif_urb_request, struct usbif_urb_response);
-#define USB_URB_RING_SIZE __RING_SIZE((struct usbif_urb_sring *)0, PAGE_SIZE)
+#define USB_URB_RING_SIZE __CONST_RING_SIZE(usbif_urb, PAGE_SIZE)
 
 /*
  * RING for notifying connect/disconnect events to frontend
@@ -146,6 +146,6 @@ struct usbif_conn_response {
 typedef struct usbif_conn_response usbif_conn_response_t;
 
 DEFINE_RING_TYPES(usbif_conn, struct usbif_conn_request, struct usbif_conn_response);
-#define USB_CONN_RING_SIZE __RING_SIZE((struct usbif_conn_sring *)0, PAGE_SIZE)
+#define USB_CONN_RING_SIZE __CONST_RING_SIZE(usbif_conn, PAGE_SIZE)
 
 #endif /* __XEN_PUBLIC_IO_USBIF_H__ */