这个linux内核宏中BIT()的含义是什么?

时间:2018-06-13 12:30:04

标签: c linux linux-kernel macros

我正在浏览Linux内核代码,在file hid.h中,HID_QUIRK_ALWAYS_POLL宏定义为:

#define HID_QUIRK_ALWAYS_POLL   BIT(10)

BIT(10)的含义是什么?我对C并不熟悉,但据我所知(并研究过),没有这样的位操作功能。

3 个答案:

答案 0 :(得分:6)

看起来你可以在包含的第一个头文件中找到答案,即bitops.h

#define BIT(nr) (1UL << (nr))

即。 BIT定义了指定位数的位掩码,从0(最低有效位或最右位)到无符号长整数。 因此BIT(10)应评估为1024的数值(即1 << 10)。

答案 1 :(得分:3)

BIT是内核树中include/linux/bitops.h中定义的宏:

#define BIT(nr)         (1UL << (nr))

所以BIT(10)基本上是一个无符号长整数,第十位设置。

答案 2 :(得分:0)

BIT宏会将值1向左移动给定的值,因此BIT(10) == (1 << (10))。它可用于从位字段获取特定的布尔值。