内核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 ...
随机推荐
- 比较牛X的网站
数学公式编辑与分享网站:https://www.mathcha.io/editor Markdown编辑网站:https://note.youdao.com/web 在线LaTex公式编辑器:http ...
- wc、grep 、 cut、paste 和 tr 命令的用法
1 wc 命令 wc 命令是一个统计的工具,主要用来显示文件所包含的行.字和字节数. wc 命令是 word count 的缩写. (1)命令格式 wc [选项] [文件] (2)常用参数 参数 描述 ...
- linux-命令行快捷方式使用
CTRL+P 命令向上翻滚 CTRL+N 命令向下翻滚 CTRL+U 命令行中删除光标前面的所有字符 CTRL+D 命令行中删除光标后面的一个字符 CTRL+H 命令行中删除光标前面的一个字符 CT ...
- SpringMVC 入门demo
(1)新建Spring项目 (2)添加所需要的jar包 spring的5+2: spring-core.jar spring.beans.jar spring-context.jar spring-e ...
- Django 学习之Django Rest Framework(DRF)
一. WEB应用模式 在开发Web应用中,有两种应用模式 1. 前后端不分离 把html模板文件和django的模板语法结合渲染完成以后才从服务器返回给客户. 2. 前后端分离 二. API接口 AP ...
- Python爬虫解析网页的4种方式 值得收藏
用Python写爬虫工具在现在是一种司空见惯的事情,每个人都希望能够写一段程序去互联网上扒一点资料下来,用于数据分析或者干点别的事情. 我们知道,爬虫的原理无非是把目标网址的内容下载下来存储到内存 ...
- 对象和Map转化gongju
package czc.superzig.modular.utils; import java.lang.reflect.Field; import java.util.HashMap; import ...
- Python流程控制-1 顺序执行
流程控制指的是代码运行逻辑.分支走向.循环控制,是真正体现我们程序执行顺序的操作.流程控制一般分为顺序执行.条件判断和循环控制. 顺序执行 Python代码在执行过程中,遵循下面的基本原则: 普通语句 ...
- [经验] SpringBoot 远程连接 Linux 上的 Redis
开发环境: ---------- springboot 2.X ---------- Linux Ubuntu 18.0.04 关于怎么在 Ubuntu 上安装 Linux , 网上的教程一大堆, 这 ...
- web前端面试第一次[javascript函数和方法的区别]
//函数 function f1(){ console.log("我是函数"); } //调用函数 f1(); //创建一个空对象 var obj = {} //把函数定义到对象里 ...