[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC 1/2] usbif.h: don't require PAGE_SIZE to be present
On 19/10/16 11:46, Wei Liu wrote: > If it is present, use it; otherwise use 4096. Also provide two new > macros to let user have control over the page size used to do > calculation. > > Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx> > --- > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx> > Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > Cc: Jan Beulich <jbeulich@xxxxxxxx> > Cc: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx> > Cc: Tim Deegan <tim@xxxxxxx> > Cc: Wei Liu <wei.liu2@xxxxxxxxxx> > Cc: Juergen Gross <jgross@xxxxxxxx> > --- > xen/include/public/io/usbif.h | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/xen/include/public/io/usbif.h b/xen/include/public/io/usbif.h > index 4053c24..ac38318 100644 > --- a/xen/include/public/io/usbif.h > +++ b/xen/include/public/io/usbif.h > @@ -216,6 +216,16 @@ struct usbif_urb_request { > }; > typedef struct usbif_urb_request usbif_urb_request_t; > > +/* > + * Reference to PAGE_SIZE was overlooked when this header file was > + * introduced. Respect PAGE_SIZE if defined, otherwise, use 4096. > + */ > +#ifdef PAGE_SIZE > +#define _USB_RING_PAGE_SIZE PAGE_SIZE > +#else > +#define _USB_RING_PAGE_SIZE 4096 > +#endif Tokens starting with an single underscore and a capital letter are reserved. Also, I am -1 to screwing around like this. The header file should not reference PAGE_SIZE as it creates ABI-incompatible code when compiled on different systems. If we really want to get into a rant, then we *should not* be using C to describe our ABI in the first place, for precisely reasons like this. ABIs should be written down in a text document. It is fine to provide C header files to implement an ABI described elsewhere, but using C as the ABI statement causes repeated disasters like this. > + > struct usbif_urb_response { > uint16_t id; /* request id */ > uint16_t start_frame; /* start frame (ISO) */ > @@ -226,7 +236,12 @@ 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 __CONST_RING_SIZE(usbif_urb, PAGE_SIZE) > +/* > + * Please use _SIZE2 variant in new code, _SIZE variant is kept for > + * backward-compatibility. > + */ > +#define USB_URB_RING_SIZE __CONST_RING_SIZE(usbif_urb, _USB_RING_PAGE_SIZE) > +#define USB_URB_RING_SIZE2(pgsize) __CONST_RING_SIZE(usbif_urb, (pgsize)) No brackets are needed around pgsize, as it is just a passed parameter. ~Andrew > > /* > * RING for notifying connect/disconnect events to frontend > @@ -248,6 +263,11 @@ 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 __CONST_RING_SIZE(usbif_conn, PAGE_SIZE) > +/* > + * Please use _SIZE2 variant in new code, _SIZE variant is kept for > + * backward-compatibility. > + */ > +#define USB_CONN_RING_SIZE __CONST_RING_SIZE(usbif_conn, > _USB_RING_PAGE_SIZE) > +#define USB_CONN_RING_SIZE2(pgsize) __CONST_RING_SIZE(usbif_conn, (pgsize)) > > #endif /* __XEN_PUBLIC_IO_USBIF_H__ */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |