【问题标题】:what does "typedef __u16 __bitwise __le16;" mean in Linux kernel?“typedef __u16 __bitwise __le16;”是什么意思?在Linux内核中是什么意思?
【发布时间】:2012-03-29 15:20:43
【问题描述】:

typedef __u16 __bitwise __le16; 在 Linux 内核中是什么意思?

实际上,这里的“le”是什么意思? 我隐约可以看出这是一个无符号的 16 位整数?

感谢您的帮助。

【问题讨论】:

  • le 的意思是听到“小端序”,它表示内存中数据的字节顺序。

标签: linux linux-kernel


【解决方案1】:

我发现 (source) 和 that

类型标识符

以下类型标识符对应于 u16、u32 和 u64 类型,但它们是使用按位属性定义的,用于限制它们作为整数的使用。 sparse 实用程序使用按位属性来确保在对变量执行其他(不安全)操作之前将变量转换为本地处理器类型。

在包含 linux/kernel.h 头文件后,以下类型可用于字节序因变量。

__le16
__le32  
__le64


__be16
__be32
__be64

【讨论】:

【解决方案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 只表示顺序敏感,它不指定大端或小端。

    我说的对吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 2023-03-10
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      相关资源
      最近更新 更多