版本:linux-2.6.24.4

宏:

MKDEV(MAJOR, MINOR);  

说明: 获取设备在设备表中的位置。

MAJOR   主设备号

MINOR   次设备号

 
 

内核使用的版本号说明文件:

    在内核 /Documentation 目录下的 devices.txt 有说明。

    一般本地保留的

        MAJOR

234-239 UNASSIGNED

240-254 char
LOCAL/EXPERIMENTAL USE

240-254 block
LOCAL/EXPERIMENTAL USE  

        MINOR

1 ~ 250 (次设备号的 0 不能使用)

   
 

静态的设备文件建立:

    mknod /dev/gpio_led c 240 1

 
 

 
 

下面这段话出自linux内核linux/kdev.h中,是关于主次设备号操作的一些宏

 
 

1

4

8 #define MAJOR(dev)                ((unsigned int) ((dev) >> MINORBITS))
9 #define MINOR(dev)                ((unsigned int) ((dev) & MINORMASK))
10 #define MKDEV(ma,mi)         (((ma) << MINORBITS) | (mi))

 
 

对上面的这个宏要理解的话先得理解下面这段话先得理解1u<<(port)的含义:

1u<<(port)可以理解为取一个无符号数,其大小为1,并且将其左移port位。

例如:port=3,则其等同于:1<<3;

 
 

在理解了以上的含义以后,可以发现:

(1U << MINORBITS) 的结果是: 0000 0000 0001 0000 0000 0000 0000 0000

 
 

((1U << MINORBITS) - 1)的结果是:0000 0000 0000 1111 1111 1111 1111 1111

 
 

那么进一步分析可以知道:

MAJOR(dev)得到的是dev的高12位;

MINOR(dev)得到的是dev的低20位;

 
 

MKDEV(ma,mi) 就是先将主设备号左移20位,然后与次设备号相加得到设备号。

内核MKDEV(MAJOR, MINOR)的更多相关文章

  1. 内核MKDEV(MAJOR, MINOR)宏

    版本:linux-2.6.24.4宏:    MKDEV(MAJOR, MINOR);  说明: 获取设备在设备表中的位置.        MAJOR   主设备号        MINOR   次设 ...

  2. ⭐内核MKDEV(MAJOR, MINOR)宏

    版本:linux-2.6.24.4宏:    MKDEV(MAJOR, MINOR);  说明: 获取设备在设备表中的位置.        MAJOR   主设备号        MINOR   次设 ...

  3. 记一次jdk升级引起的 Unsupported major.minor version 51.0

    之前jdk 一直是1.6,tomcat 是6.x 版本,, 现在引入的新的jar, 出现 Caused by: java.lang.UnsupportedClassVersionError: org/ ...

  4. 解决Unsupported major.minor version 51.0错误

    解决Unsupported major.minor version 51.0错误使用jdk6运行项目时发生了Unsupported major.minor version 51.0错误.经过网上搜索发 ...

  5. Unsupported major.minor version 51.0

    org/jboss/as/domain/management/security/adduser/AddUser : Unsupported major.minor version 51. 0 已编译好 ...

  6. Unsupported major.minor version 52.0问题的解决

    下载Tomcat9.0,解压后安装运行,结果启动失败,进入logs文件夹看里面的日志文件,提示是Unsupported major.minor version 52.0错误,这是因为Tomcat版本过 ...

  7. Android studio 出现 Unsupported major.minor version 52.0

    参考资料:http://blog.csdn.net/fakine/article/details/51241202 最近更新了Android studio 之后,出现了Error:java.lang. ...

  8. Unsupported major.minor version 51.0解决办法

    问题: 之前使用的是高版本的myeclipse2015ci,然后换成了myeclipse10.5,之前的workspace的内容没有改变,结果工程都出现了感叹号,运行时提示 Unsupported m ...

  9. Ant编译提示“Unsupported major.minor version 52.0”

    今天在使用Ant编译build.xml文件时报错"java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsu ...

随机推荐

  1. 的aspnet_client文件夹

    在早期,有一些asp.net组件是默认要调用(从客户端调用)服务器根(域名)下这个子目录里边的文件的. 不过如果你使用高版本的asp.net,那么全都从你的网站里调用了,因为asp.net有了更好地直 ...

  2. SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xd0 in position 2: invalid continuation byte

    [root@hostuser src]# python3 subprocess_popen.py File "subprocess_popen.py", line 23Syntax ...

  3. SpringBoot 集成Log4j、集成AOP

    集成Log4j (1)在pom.xml中添加依赖 <!--去掉springboot默认的日志--> <dependency> <groupId>org.spring ...

  4. jquery怎么获取当前标签下的子标签

    1.var num1=$("ul > a:eq(0)").attr("ID");2.var num2=$("ul").children ...

  5. Java通过反射实现实例化

    public static void main(String[] args) throws Exception { User user= (User) test(User.class); System ...

  6. 牛茶冲天的ip命令

    一.修改二层链路相关设置 1.修改网卡名称(修改前要先停止) ip link set eth0 name  testname 2.修改网卡地址 ip link set eth0 address xxx ...

  7. 吴裕雄--天生自然PythonDjangoWeb企业开发:Django文档阅读简介

    Django是基于MVC模式的框架,虽然也被称为“MTV”的模式,但是大同小异.对我们来说,需要了解的是无论是MVC模式还是MTV模式,甚至是其他的什么模式,都是为了解耦.把一个软件系统划分为一层一层 ...

  8. C#操作Word的超详细总结 ---转载

    C#操作Word的超详细总结 本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设 ...

  9. 学习不一样的vue实战(2): 项目分析

    学习不一样的vue实战(2): 项目分析 首先 首发博客: 我的博客 项目源码: 源码(喜欢请star) 项目预览: 预览 上一章: <学习不一样的vue(1)实战:环境搭建> 我的Q群: ...

  10. Lora笔记

    Lora笔记 2016-03-26 [概述] LPWAN技术 无线跳频技术简介 https://bitbucket.org/ [节点] SX1278测试 SX1278测试 SX1276调试总结 LoR ...