当前位置: 首页 > 编程日记 > 正文

chrdev字符设备几种注册方式的差异

数据结构

#define CHRDEV_MAJOR_HASH_SIZE  255static struct char_device_struct {struct char_device_struct *next;unsigned int major;unsigned int baseminor;int minorct;char name[64];struct file_operations *fops;struct cdev *cdev; /* will die */
} *chrdevs[CHRDEV_MAJOR_HASH_SIZE];/* index in the above */
static inline int major_to_index(int major)
{return major % CHRDEV_MAJOR_HASH_SIZE;
}

全局变量chrdevs,是一个保存所有字符设备的数组,按主转换出的索引值从小到大排列;
每个元素为一个char_device_struct 链表,链表元素按次设备号从小到大排列。
主设备号与索引的关系为:major % CHRDEV_MAJOR_HASH_SIZE, 即:major = 1 与major = 256在使用相同的索引值,index=1;

设备申请方式的差异

-----------------------------------------------  支持多设备 -----------------------------------------------int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)dev = 0 时,为动态申请设备,申请到的设备号保存到dev;baseminor,次设备号起始编号;count,申请连续设备号的数量;name,设备名称;-----------------------------------------------  只支持静态申请 -----------------------------------------------int register_chrdev_region(dev_t from, unsigned count, const char *name)from,申请的设备号起始编号;count,申请连续设备号的数量;name,设备名称;
-----------------------------------------------  单设备 -----------------------------------------------int register_chrdev(unsigned int major, const char *name, const struct file_operations *fops)major = 0 时,为动态申请设备,申请到的主设备号保存到major;name,设备名称;fops,关联设备的文件操作符;

注:对于申请连续的设备号,使用倒序申请。最终返回起始设备号。

功能差异

完整注册过程

    register_chrdev = { alloc_chrdev_region + cdev_init + cdev_add }

转载于:https://www.cnblogs.com/gaoyang3513/p/10968765.html

相关文章:

ldconfig及 LD_LIBRARY_PATH

ldconfig及 LD_LIBRARY_PATH 1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到 2.想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然…

Java项目:诚途旅游系统(java+JSP+Spring+SSM+Mysql)

源码获取:博客首页 "资源" 里下载! 采用ssm架构实现的旅游网站系统 包括网站展示和后台管理功能,网站主要是页面浏览以及评论、制定旅游方案、智能推荐功能 后台就是维护网站展示的内容,添加旅游景点、管理用户、查看…

combotree

1,直接获取: 单选:$("#id").combotree("getValue") 多选:$("#id").combotree("getValues") 注意:如果value中的值和所显示的文本不同,如需获取文本内…

SCRIPT1028:缺少标识符、字符串或数字 jquery ajax

2019独角兽企业重金招聘Python工程师标准>>> SCRIPT1028:缺少标识符、字符串或数字 使用jquery时报此错误 究其原因是对象键值对格式错误: 原格式: 多了一个逗号obj { "usernmae":"zhangsan", "sex"…

IOS 编程中引用第三方的方类库的方法及常见问题

方法一:直接复制全部源文件到项目中 这样的方法就是把第三方类库的全部源文件复制到项目中。直接把全部.h和.m文件拖到XCode项目中就可以。 注意: 1. 假设第三方类库引用了一些系统自带类库。那么在项目中还须要额外引用那些类库。2. 假设当前的项目启用了ARC。而引…

gcc中-pthread和-lpthread的区别

用gcc编译使用了POSIX thread的程序时通常需要加额外的选项,以便使用thread-safe的库及头文件,一些老的书里说直接增加链接选项 -lpthread 就可以了,像这样: Shell代码 gcc -c x.c gcc x.o -ox -lpthread 而gcc手册里则指出应…

Java项目:精品养老院管理系统(java+Springboot+Maven+mybatis+Vue+Mysql)

源码获取:博客首页 "资源" 里下载! 一、项目简述本系统功能包括:通知公告,老人管理,护工管理,问答管理等等功能。 二、项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX&am…

install python+twisted+mysqldb+django on mac

一. install python 1) check install or not 在mac终端输入命令:which python 即可查看python的路径 2)未安装时,手动下载安装包 地址:https://www.python.org/downloads/ 选择下载 Mac OS X 64-bit/32-bit installer 安装 二…

JVM优雅退出

在某个Java应用增加新功能,缩容机器,或者应用以及机器发生异常,通常会停止正在运行的应用,该应用通常正在运行着任务,如果停止应用的操作处理不当的话,很有可能会导致数据丢失,损坏,从而影响业务。所以在停止应用的时候,需要考虑如何安全优雅的退出。维护了所有已经注册的钩子,由于jvm本身没有提供好用的方法去移除已经注册的钩子,可以通过反射的方式调用。对于强制关闭的几种情况,会直接停止JVM进程,JVM不会调用已注册的。对于正常关闭、异常关闭的几种情况,JVM关闭前,都会调用已注册的。

网络名词--“环路”

环路一直是网络工程师以及网络运维人员头疼的事,如何防止环路的产生,如何快速找出环路的原因排除故障,是每一个网络从业人员必备的技能。这就要求我们对环路产生的原因了如指掌,本文主要对交换环路进行分析,从分类、形…

希腊字母表及读音

序号大写小写国际音标中文读音意义1Ααa:lf阿尔法角度;系数2Ββbet贝塔磁通系数;角度;系数3Γγga:m伽马电导系数(小写)4Δδdelt德尔塔变动;密度;屈光度5Εεep`silon伊普西龙对数之基数6Ζζzat截塔系数;方位角;阻抗;相对粘度;原子序数7Ηηeit艾塔磁滞系数;效率(小写)8Θθθit西塔温度;相位角9Ιιaiot约塔

loadrunner——win7+LR11配置

一、 安装vmware虚拟机 下载安装vmware15后,可使用密钥为:CG392-4PX5J-H816Z-HYZNG-PQRG2 二、 安装win7系统 2.1下载win7镜像文件 2.2 vmware中创建win7虚拟机 创建过程省略,一键式创建即可,windows产品可使用密钥如下&#xff1…

C++标准库中sstream和strstream的区别

在C有两种字符串流,一种在sstream中定义, 另一种在strstream中定义。 它们实现的东西基本一样。 strstream里包含 class strstreambuf; class istrstream; class ostrstream; class strstream; 它们是基于C类型字符串char*编写的 sstream中包含 class is…

基于jQuery垂直多级导航菜单代码

基于jQuery垂直多级导航菜单代码是一款黑色风格的jQuery竖直导航菜单特效下载。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <ul class"ce"><li> <a class"xz" href"#">目录A</a>…

Java项目:在线考试系统(java+springBoot+vue+Mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 管理员和教师登陆此账号就进入后台&#xff0c;学生登陆此账号就进入前端做题。 老师发布了考试,学生才可以在主页面看到相应的考试信息。 有考试安排表以后,才能给该次考试添加题目,对应数据表是exammanag…

来玩Play框架05 数据库

作者&#xff1a;Vamei 出处&#xff1a;http://www.cnblogs.com/vamei 欢迎转载&#xff0c;也请保留这段声明。谢谢&#xff01; 数据库是整个站点的数据储藏室。用户提交的数据可以存储在数据库中&#xff0c;以便未来使用。Play可以通过JDBC和数据库通信。我讲介绍Play和my…

mysql数据库之linux版本

http://repo.mysql.com/yum/mysql-5.6-community/ 安装 安装方式一(在线安装) # 查看和mysql…

LINUX UMASK详解

一 权限掩码umask umask是chmod配套的&#xff0c;总共为4位&#xff08;gid/uid,属主&#xff0c;组权&#xff0c;其它用户的权限&#xff09;,不过通常用到的是后3个&#xff0c;例如你用chmod 755 file&#xff08;此时这文件的权限是属主读(4)写(2)&#xff0b;执行(1),同…

ubuntu14.04安装hadoop2.6.0(伪分布模式)

版本&#xff1a;虚拟机下安装的ubuntu14.04&#xff08;64位&#xff09;,hadoop-2.6.0 下面是hadoop2.6.0的官方英文教程&#xff1a; http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation hadoop下载…

Java项目:生活旅行分享平台(java+Springboot+JPA+Jsp+Html+js+Ajax+maven+mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 mysql Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09; 项目技术&#xff1a; Springboot SpringMVC JPA Jsp Htm…

Servlet和SpringMVC补课

1.web.xml加载顺序 http://mianhuaman.iteye.com/blog/1105522 关键点&#xff1a;ServletContext -> context-param -> listener -> filter -> servlet 2.beans xmlns http://www.w3school.com.cn/xml/xml_namespaces.asp 用于避免元素命名冲突。在Spring中应用极…

gdb debug

1. dir 添加源代码查找路径 一般工程的代码会有多路径&#xff0c;gdb会在当前目录下搜索符号对应的代码。利用dir <path> 可以添加代码搜索路径&#xff1b; 例如工程目录&#xff1a; ./ ./dir_1/ ./dir_2/ 可以用如下命令添加代码搜索路径&#xff1a; dir dir…

Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 mysql Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09; 项目技术&#xff1a; Springboot SpringMVC JPA Jsp Htm…

javascript编译与运行机理(1)--

随着学习js的深入就越想了解其内部的运行机理&#xff0c;看了很多文章&#xff0c;感觉下面总结的不错。但囿于个人水平&#xff0c;只是达到了理解层面&#xff0c;还不能提出自己的见解&#xff0c;只好把资料罗列出来&#xff0c;留待以后总结&#xff1a; 1、Javascript的…

Citrix Synergy 2014 重要信息快速一览

今天的互联网、社交媒体的确强大&#xff0c;我们可以足不出户了解到9600公里&#xff08;北京到LA的距离&#xff09;之外的美国发生的事情。今天从Brain Madden大神那儿又扒到了一些经过提炼的关于Citrix Synergy 2014&#xff08;Citrix每年一度的大会&#xff09;的会议内容…

stm32 flash和sram

FLASH是用来存储程序的&#xff0c;SRAM是用来存储程序运行中的中间变量转载于:https://www.cnblogs.com/CodeWorkerLiMing/p/10984065.html

常见主机字节序

常见主机字节序1&#xff0e; Little endian&#xff1a;将低序字节存储在起始地址2&#xff0e; Big endian&#xff1a;将高序字节存储在起始地址LE little-endian最符合人的 思维的字节序地址低位存储值的低位地址高位存储值的高位怎么讲是最符合人的思维的字节序&#xff0…

Java项目:仿小米电子产品售卖商城系统(java+SpringBoot+Vue+MySQL+Redis+ElementUI)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 项目描述&#xff1a;这是一个基于SpringBootVue框架开发的仿小米电子产品售卖商城系统。首先&#xff0c;这是一个前后端分离的项目&#xff0c;代码简洁规范&#xff0c;注释说明详细。其次&#xff0c;这…

在js中使用createElement创建HTML对象和元素

1.创建链接 <script language"javascript"> var o document.body; //创建链接 function createA(url,text) { var a document.createElement("a"); a.href url; a.innerHTML text; a.style.color "red"; o.appendChild(a); …

Leetcode | 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a b c 0? Find all unique triplets in the array which gives the sum of zero. Note:Elements in a triplet (a,b,c) must be in non-descending order. (ie, a ≤ b ≤ c)The solution set …