[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] blkif: add indirect descriptors interface to public headers



On Tue, 2013-11-12 at 09:42 -0500, Konrad Rzeszutek Wilk wrote:
> On Tue, Nov 12, 2013 at 02:29:01PM +0000, Ian Campbell wrote:
> > On Tue, 2013-11-12 at 09:22 -0500, Konrad Rzeszutek Wilk wrote:
> > 
> > > > > +struct blkif_request_indirect {
> > > > > +    uint8_t        operation;    /* BLKIF_OP_INDIRECT                
> > > > >     */
> > > > > +    uint8_t        indirect_op;  /* BLKIF_OP_{READ/WRITE}            
> > > > >     */
> > > > > +    uint16_t       nr_segments;  /* number of segments               
> > > > >     */
> > > > 
> > > > This is going to be a problem. What alignment boundary are you
> > > expecting the next field to start on? AFAIK 32-bit gcc will 4-byte
> > > align it, 32-bit MSVC will 8-byte align it.
> > > > 
> > > 
> > > Oh no. I thought that the Linux one had this set correctly, ah it did:
> > > 
> > >                                                                           
> > >         
> > > struct blkif_request_indirect {                                           
> > >          
> > > [...]
> > > } __attribute__((__packed__));     
> > 
> > That attribute packed isn't allowed in the public interface headers.
> 
> Right. I had hit that at some point with putting in a u64 and seeing
> it mushroom up while if I did two u32 it padded it nicely.
> 
> Perhaps that is what we should do?

What you should do is make the struct declare something which matches
the required ABI. I don't really care how it is achieved on the Linux
side.

>  The Linux struct has the same size
> whether it be 64-bit or 32-bit.
> 
> > 
> > Since compilers do differ in their packing, and guests may be using
> > various pragmas, it might be useful to write down that for x86 these
> > headers are to be treated as using the <WHATEVER> ABI (gcc? Some Intel
> > standard?). 
> 
> Or perhaps just mention the size of the structure and offset?

You'd need to do that for every field of every struct. Which is really
why documentation of struct layout ABIs exist...

Ian.


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.