版本: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. DoublyLinkedList(双向链表)

    本来还不会写双向链表的,但最近学习了二叉树后,突然意识到这不就是双向链表嘛,然后通过对二叉树的理解,实现了一下双向链表. 代码: #define SIZE 10 DouLL * head, *n, * ...

  2. selected中第一项 请选择,隐藏

    如何做到selected 类似input的提示语  placeholder效果. <select class="wyj_dbfs"> <option style= ...

  3. base64,base32bit加密解密

    import base64 str='admin' str=str.encode('utf-8') #加密 bs64=base64.b64encode(str) #解密 debs64=base64.b ...

  4. linux下的npm安装

    curl --silent --location https://rpm.nodesource.com/setup_10.x | bash - yum install -y nodejs npm in ...

  5. Python 爬取 热词并进行分类数据分析-[热词关系图+报告生成]

    日期:2020.02.05 博客期:144 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  6. jdk 档案库(包含历史版本)

    http://java.sun.com/products/archive/ 参考:https://blog.csdn.net/shiluyong8068/article/details/7894747 ...

  7. 《Java Spring框架》Spring IOC 源码分析

    1.下载源码 源码部署:https://www.cnblogs.com/jssj/p/11631881.html 并不强求,最好是有源码(方便理解和查问题). 2. 创建子项目 Spring项目中创建 ...

  8. WCF服务调用方式

    WCF服务调用通过两种常用的方式:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式,一种是通过ChannelFactory直接创建服务代理对象进行服务调用.

  9. LinearLayout属性android:orientation

    Android布局LinearLayout注意设置属性android:orientation属性,否则有的组件可能无法显示. 该属性不设置时默认为horizontal.此时第一个控件的宽度若设置成“f ...

  10. java 实现用户自由选择字段实现导出EXCEL表格

    package com.thinkgem.jeesite.common.utils.excel; import java.io.File; import java.io.OutputStream; i ...