kernel4.14/include/linux/bits.h
用于移位:
#define BIT_ULL(nr) (1ULL << (nr))
注1UL,无符号长整型1,32位,即0x00000001
1ULL,unsigned long long, 64位,即0x0000000000000001
#define GENMASK(h, l) (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
#define GENMASK_ULL(h, l) (((~0ULL) - (1ULL << (l)) + 1) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
例:GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000