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 ....


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部