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

Reply via email to