“typedef __u16 __bitwise __le16;”是啥意思?在Linux内核中是啥意思?
Posted
技术标签:
【中文标题】“typedef __u16 __bitwise __le16;”是啥意思?在Linux内核中是啥意思?【英文标题】:what does "typedef __u16 __bitwise __le16;" mean in Linux kernel?“typedef __u16 __bitwise __le16;”是什么意思?在Linux内核中是什么意思? 【发布时间】:2022-01-13 05:09:17 【问题描述】:typedef __u16 __bitwise __le16;
在 Linux 内核中是什么意思?
实际上,这里的“le”是什么意思? 我隐约可以看出这是一个无符号的 16 位整数?
感谢您的帮助。
【问题讨论】:
le 的意思是听到“小端序”,它表示内存中数据的字节顺序。 【参考方案1】:我发现 (source) 和 that
类型标识符
以下类型标识符对应于 u16、u32 和 u64 类型,但它们是使用按位属性定义的,用于限制它们作为整数的使用。 sparse 实用程序使用按位属性来确保在对变量执行其他(不安全)操作之前将变量转换为本地处理器类型。
在包含 linux/kernel.h 头文件后,以下类型可用于字节序因变量。
__le16
__le32
__le64
__be16
__be32
__be64
【讨论】:
链接到内核代码中的源代码elixir.bootlin.com/linux/latest/source/include/uapi/linux/…【参考方案2】:简答:代表little endian
长答案:查看@Pben 的answer 中的链接
【讨论】:
【参考方案3】:根据Documentation/sparse.txt:
使用 gcc,所有 __bitwise/__force 的东西都消失了,这一切 最终看起来就像 gcc 的整数。
所以我的理解是:
一个。它仅用于类型检查。
b.如果你有
typedef __u16 __bitwise __my_type1;
typedef __u16 __bitwise __my_type2;
如果将 __my_type1 分配给 __my_type2,Sparse 会发出警告。
c。 __bitwise 只表示顺序敏感,它不指定大端或小端。
我说的对吗?
【讨论】:
以上是关于“typedef __u16 __bitwise __le16;”是啥意思?在Linux内核中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章