linux 内核常见的宏控
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
DIV_ROUND_UP :表示的是 n 是d 的多少倍.
比如: n :30 , d: 32
则 则 这个宏表示的是 30+32-1 / 32 =1
BITS_TO_LONGS :显示 是看 这个 bits 最多用 多少个 long 字型 可以把这个 bits 存储的下
比如: 31bits 一个 long 字符就够了
35: 就需要2个了..
大致就是这样的..
MKDEV :生成一个 设备号
从这 可以看出 主设备号 是在 高 20位 ,所以要 左移 20位 .
#define MINORBITS 20
#define MKDEV(ma,mi) (((ma) << MINORBITS) | (mi))
#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))在来说下 BIT_MASK 假设 是这种类型的事件 #define EV_MSC 0x04则 表示的是 1<< 4 ,就是用第4个 比特位来表示 这个事件是否支持..
在 input 上是可以看到 这个代码.
BIT_MASK : 就是把 nr 位 置为 1.
比如: 这个 nr 为3,就是把 第3个比特位 置为 1 ....
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
