[openib-general] user-mode data strucures

Tom Tucker tom at opengridcomputing.com
Tue Sep 12 14:45:15 PDT 2006


On Tue, 2006-09-12 at 13:26 -0700, Roland Dreier wrote:
>     Tom> In working with the Intel compilers recently, however, I've
>     Tom> found that this compiler attempts to align data structures on
>     Tom> boundaries that are native to the data types. So uint64_t's
>     Tom> are aligned on a 64b boundary.  This is an issue for
>     Tom> ibv_recv_wr and ibv_send_wr because they are immediately
>     Tom> preceded by a *next ptr which is 32b on 32b architectures.
> 
> Ugh.
> 
> How about swapping wr_id and next in the ibv_recv_wr and ibv_send_wr
> structures?  I hate adding __attribute__((packed)) because it ruins
> things on ia64 et al.
> 

I think that just moves the alignment issue to the first word of the sge
since it's first element is a uint64_t. I think the only thing that
works across the board without packing is to #if __BITS_IN_WORD==32 add
a pad word after *next. erf...ugly code. 



>  - R.





More information about the general mailing list