MKDEV

查找MKDEV时,发现2个MKDEV。

//版本1
#ifndef __KERNEL__
/*
Some programs want their definitions of MAJOR and MINOR and MKDEV
from the kernel sources. These must be the externally visible ones.
*/
#define MKDEV(ma,mi)	((ma)<<8 | (mi))
#endif /* __KERNEL__ */


//版本2
#ifndef _LINUX_KDEV_T_H
#define _LINUX_KDEV_T_H

#include <uapi/linux/kdev_t.h>

#define MINORBITS	20
#define MKDEV(ma,mi)	(((ma) << MINORBITS) | (mi))

观察第一个版本,这个宏定义是在linux内核外定义的(#ifndef KERNEL),所以开发驱动时看的是版本2.


ma是主设备号,mi是次设备号
主设备号由dev_t的高12位表示
次设备号是dev_t的低20位
MKDEV应该是把主设备号和次设备号合成dev_t

define MKDEV(MA,MI) ((MA)<<(20)|(MI)))

还有MAJOR(dev), MINOR(dev)

posted @ 2020-02-29 11:27  friedCoder  阅读(218)  评论(0)    收藏  举报