On Fri, Dec 20, 2013 at 1:39 PM, Upinder Malhi (umalhi)
<[email protected]> wrote:
> @@ -67,7 +67,7 @@ struct usnic_ib_create_qp_resp {
> u32 rq_idx[USNIC_QP_GRP_MAX_RQS];
> u32 cq_idx[USNIC_QP_GRP_MAX_CQS];
> u32 transport;
> - u64 reserved;
> + u32 reserved[8];
> };
Making your struct be an odd number of 4-byte words seems like a bad
idea. It might be padded differently on different architectures. for
example:
$ cat a.c
#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[])
{
struct foo {
uint64_t a;
uint32_t b[3];
};
printf("%zd\n", sizeof (struct foo));
return 0;
}
$ gcc -m32 -o a ~/a.c
$ ./a
20
$ gcc -o a ~/a.c
$ ./a
24
I would suggest writing a little test harness and making sure that
sizeof and offsetof give the same outputs for all your structs on both
32-bit and 64-bit x86 at the very least.
- R.
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html