内核MKDEV(MAJOR, MINOR)
版本: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)的更多相关文章
- 内核MKDEV(MAJOR, MINOR)宏
版本:linux-2.6.24.4宏: MKDEV(MAJOR, MINOR); 说明: 获取设备在设备表中的位置. MAJOR 主设备号 MINOR 次设 ...
- ⭐内核MKDEV(MAJOR, MINOR)宏
版本:linux-2.6.24.4宏: MKDEV(MAJOR, MINOR); 说明: 获取设备在设备表中的位置. MAJOR 主设备号 MINOR 次设 ...
- 记一次jdk升级引起的 Unsupported major.minor version 51.0
之前jdk 一直是1.6,tomcat 是6.x 版本,, 现在引入的新的jar, 出现 Caused by: java.lang.UnsupportedClassVersionError: org/ ...
- 解决Unsupported major.minor version 51.0错误
解决Unsupported major.minor version 51.0错误使用jdk6运行项目时发生了Unsupported major.minor version 51.0错误.经过网上搜索发 ...
- Unsupported major.minor version 51.0
org/jboss/as/domain/management/security/adduser/AddUser : Unsupported major.minor version 51. 0 已编译好 ...
- Unsupported major.minor version 52.0问题的解决
下载Tomcat9.0,解压后安装运行,结果启动失败,进入logs文件夹看里面的日志文件,提示是Unsupported major.minor version 52.0错误,这是因为Tomcat版本过 ...
- Android studio 出现 Unsupported major.minor version 52.0
参考资料:http://blog.csdn.net/fakine/article/details/51241202 最近更新了Android studio 之后,出现了Error:java.lang. ...
- Unsupported major.minor version 51.0解决办法
问题: 之前使用的是高版本的myeclipse2015ci,然后换成了myeclipse10.5,之前的workspace的内容没有改变,结果工程都出现了感叹号,运行时提示 Unsupported m ...
- Ant编译提示“Unsupported major.minor version 52.0”
今天在使用Ant编译build.xml文件时报错"java.lang.UnsupportedClassVersionError:com/sun/tools/javac/Main : Unsu ...
随机推荐
- dojo框架笔记
一.模块定义 1.定义只含值对,没有任何依赖的模块(moudle1.js) define({ color: "black", size: "unisize" } ...
- mcast_join_source_group函数
#include <errno.h> #include <net/if.h> #include <sys/socket.h> #define SA struct s ...
- 如何用 pycharm 调试 airflow
airflow 和 pycharm 相关基础知识请看其他博客 我们在使用 airflow的 dag时. 每次写完不知道对不对的,总不能到页面环境中跑一下,等到报错再调试吧.这是很让人恼火的事情 这里我 ...
- string类的具体实现
bigThree,注意拷贝构造函数的写法. #ifndef __MYSTRING__ #define __MYSTRING__ class String { public: String(); Str ...
- vue中加载three.js的gltf模型
vue中加载three.js的gltf模型 一.开始引入three.js相关插件.首先利用淘宝镜像,操作命令为: cnpm install three //npm install three也行 二. ...
- redhat7.6 DNS配置正向解析
1.安装DNS服务 yum install bind yum install bind-chroot 安装完的配置文件/etc/named.conf 启动systemctl start named.s ...
- 【网摘】监控 div 的内容变化
数据是动态加载而来,而当无数据时,提示一下暂无数据.而数据是可以动态在当前页面即时添加的,故在无数据时所做提示,需要隐藏,所以找了这个方法.成功在动态添加数据后,暂无数据的提示没有了. if($(&q ...
- Java自学-集合框架 ArrayList和HashSet的区别
Java ArrayList和HashSet的区别 示例 1 : 是否有顺序 ArrayList: 有顺序 HashSet: 无顺序 HashSet的具体顺序,既不是按照插入顺序,也不是按照hashc ...
- 【协作式原创】查漏补缺之乐观锁与悲观锁TODO
面试官:你了解乐观锁和悲观锁吗? 乐观锁和悲观锁是两种思想,用于解决并发场景下的数据竞争问题. 悲观锁的实现方式是加锁,加锁既可以是对代码块加锁(如Java的synchronized关键字),也可以是 ...
- 阿里云linux挂载磁盘
1)使用fdisk -l命令查看主机上的硬盘 2.使用mkfs.ext4命令把硬盘格式化: mkfs.ext4 磁盘名称 如:mkfs.ext4 /dev/vdb/ 3. 使用mount命令 ...