Confuse with big endian bitwise field

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

 



hi all,

I am try  to define a hardware specific struct, it is like below:

struct xxx {
       __be32 pdu_cnt:6;
       __be32 y:3;
       __be32 wep_key:2;
       __be32 uses_wep_key:1;
       __be32 keep_alive:1;
       __be32 buff_tail_addr:19;

       __be32 cts_11g:1;
       __be32 rts_11g:1;
       __be32 x:2;
       __be32 frag_size:12;
       __be32 payload_len:12;
       __be32 frag_num:4;
}

but I am confuse with how to assign the values to the fields
"buff_tail_addr" and "payload_len", I think there  are two ways to
assign values to them, but I don't know which is right?

eg: I declare a variable  struct xxx X;

1: X.buff_tail_addr = 0x3456;                        X.payload_len = 0x20;
2: X.buff_tail_addr = cpu_to_be32(0x3456);    X.payload_len = cpu_to_be16(0x20);

There are two way I think to assign values. Could anyone tell me which
is right or both are wrong? I will be appreciate for any hints, thanks
in advance!

BR

lyb
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Assembler]     [Git]     [Kernel List]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [C Programming]     [Yosemite Campsites]     [Yosemite News]     [GCC Help]

  Powered by Linux