Thread (5 messages) 5 messages, 4 authors, 2011-10-25

Purpose of using __be16 inside a data structure?

From: Adam Lee <hidden>
Date: 2011-08-24 05:16:17

On Tue, Aug 09, 2011 at 03:25:52PM +0800, ??? wrote:
Please tell me the difference between using unsigned short and __be16 to
declear a variable in a data structure.
For example, in include/net/inet_sock.h, struct inet_sock is decleared as
?
struct inet_sock {
??????? __be16????????????????? inet_dport;
};
?
not
?
struct inet_sock {
????????unsigned short????????????????? inet_dport;
};
?
I think it has something to do with endianness. But I see that both __le16 and
__be16 are unsigned short when using gcc with -E option?for little-endian and
big-endian platform. Can someone give me more information?
?
* little-endian
typedef unsigned short __u16;
typedef __u16 __le16;
typedef __u16 __be16;
?
* big-endian
typedef unsigned short __u16;
typedef __u16 __le16;
typedef __u16 __be16;
Which platform? The atomic element size is 16-bit? Maybe you should take
a look at __be32 and __le32.

FYI: This is in the kernel types.h

----
#ifdef __CHECKER__
#define __bitwise__ __attribute__((bitwise))
#else
#define __bitwise__
#endif
#ifdef __CHECK_ENDIAN__
#define __bitwise __bitwise__
#else
#define __bitwise
#endif

typedef __u16 __bitwise __le16;
typedef __u16 __bitwise __be16;
----

-- 
Regards,
Adam Lee
--------------------------------------------------
E-mail: adam8157 at gmail.com
Website: http://www.adam8157.info
--------------------------------------------------
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help