驱动开发,udev机制创建设备节点的过程分析

1.创建设备文件的机制种类

  • mknod命令:手动创建设备节点的命令

  • devfs:可以用于创建设备节点,创建设备节点的逻辑在内核空间(内核2.4版本之前使用)

  • udev:自动创建设备节点的机制,创建设备节点的逻辑在用户空间(从内核2.6版本一直使用至今)

  • mdev:是一种轻量级的udev机制,用于一些嵌入式操作系统中

2.udev机制创建设备节点的过程分析

总体分析:当在内核空间注册驱动后得到设备号,基于设备号可以在文件系统中创建设备对应的设备文件,在用户空间的应用程序中,操作设备文件时就可以访问到对应的设备驱动,当调用系统调用时驱动中的操作方法会被回调。

第一步:注册字符设备驱动(申请了一定数量的设备资源),得到用于标识设备的设备号;

第二步:获取硬件设备信息(从设备树或者指定地址获取),用于控制硬件;

第三步:创建一个设备类(向上提交目录信息),申请struct class对象并且初始化,会生成/sys/class/类名 设备类相关信息;

第四步:创建一个设备对象(向上提交设备节点信息),申请strucu device对象并初始化,会发起hotplug(热插拔)事件,用户层空间的hotplug进程通知udev进程在/dev/路径下创建设备节(根据/sys/class/类名/路径下存放设备节点信息 创建);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenWrt kernel install分析(2)

一. 前言 接下来分析make -C image compile install TARGET_BUILD。 二. Makefile分析 1. 命令首先运行target/linux/mediatek/image/Makefile,该文件内容如下: target/linux/mediatek/image/Makefile: include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/image.…

虚拟机Ubuntu操作系统常用终端命令(1)(详细解释+详细演示)

虚拟机Ubuntu操作系统常用终端命令 本篇讲述了Ubuntu操作系统常用的三个功能,即归档,软链接和用户管理方面的相关知识。希望能够得到大家的支持。 文章目录 虚拟机Ubuntu操作系统常用终端命令二、使用步骤1.归档1.1创建档案包1.2还原档案包1.3归档并压缩…

类和对象【初始化列表与友元】

全文目录 初始化列表特性 explicit关键字static成员特性 友元友元函数友元类内部类特性 初始化列表 构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。 对象的初始化是在初始化列表进行…

亲测可用!!!Centos7安装chrome+chromedriver以便实现selenium自动化详细教程

网上很多教程都是在线安装chrome,这样安装了最新稳定的chrome,可惜我遇到chromdriver的版本跟上 chrome,为了早日实现在centos服务selenium自动化,不可能去等待 chromdriver 更新,只能 chrome进行降版本来离线安装。花…

redis的基本概念和常见问题的解决!

一、什么是redis Redis是一个NoSQL(非关系型数据库)数据库之一,是一个用C语言开发的一个开源的高性能键值对(key-value)数据库或者说是一个缓存键值对数据库 ,用作数据库、缓存、消息中间件等。它支持多种数据结构,包…

【Flowable】FlowableUI使用以及在IDEA使用flowable插件(二)

前言 之前有需要使用到Flowable,鉴于网上的资料不是很多也不是很全也是捣鼓了半天,因此争取能在这里简单分享一下经验,帮助有需要的朋友,也非常欢迎大家指出不足的地方。 一、部署FlowableUI 1.准备war包 在这里提供了&#xf…

026-从零搭建微服务-文件服务(二)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):https://gitee.com/csps/mingyue 源码地址(前端):https://gitee.com/csps…

关于运行PR提示vcruntime140.dll无法继续执行代码的4个解决方法分享

关于运行安 PR提示vcruntime140.dll无法继续执行代码的困扰,小编将为您提供详细的解决方法。在此之前,我们需要了解一下vcruntime140.dll文件的作用。 vcruntime140.dll 是 Visual C Redistributable 的动态链接库文件,它包含了 C运行时库的一…

GeoSOS-FLUS未来土地利用变化情景模拟模型

软件简介 适用场景 GeoSOS-FLUS软件能较好的应用于土地利用变化模拟与未来土地利用情景 的预测和分析中,是进行地理空间模拟、参与空间优化、辅助决策制定的有效工 具。FLUS 模型可直接用于: 城市发展模拟及城市增长边界划定;城市内 部高分…

Zabbix监控组件及流程

Zabbix 由5大组件构成 Zabbix Web、Zabbix Server、Zabbix Proxy、Zabbix Database、Zabbix Agent Zabbix监控系统具体监控系统流程如图: Zabbix Web Zabbix Web是基于PHP语言编写的WEB UI界面,展示Zabbix整个监控平台监控数据、配置信息、方便对整个…

SQL Server 2012下载和安装配置详细教程手册

SQL Server 2012 下载和安装详细教程 目录 SQL Server 2012 下载和安装详细教程1、软件下载2、软件安装3、软件验证 1、软件下载 (1)官网地址 https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads (可能不太行) &a…

家庭安全不容小觑!青犀AI智能分析算法+摄像头助力家庭安全

你知道吗?高层家庭更需要人工摄像头!虽然现在社会治安十分稳定,高层建筑更是安全,但高层盗窃、陌生人入室这些新闻还是层出不穷,为了解决这些安全隐患,给广大人民一个安心的生活环境,旭帆科技将…

Android MeidiaCodec之OMXPluginBase与QComOMXPlugin实现本质(四十)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Flink报错处理-1

在 flink job 运行一段时间后,观察日志发现出现了如下的 warn日志: The operator name {} exceeded the {} characters length limit and was truncated 完整的 warn 日志如下: The operator name TriggerWindow(GlobalWindows(), ListStat…

机器学习技术(十)——决策树算法实操,基于运营商过往数据对用户离网情况进行预测

机器学习技术(十)——决策树算法实操 文章目录 机器学习技术(十)——决策树算法实操一、引言二、数据集介绍三、导入相关依赖库四、读取并查看数据1、读取数据2、查看数据 五、数据预处理1、选择数据2、数据转码 六、建模与参数优…

OPC是通讯协议吗安全性

目录 1 安全防护 1.1 防火墙 1.2 网闸 2 OPC是通讯协议吗 2.1 什么通讯协议 2.2 那么OPC又是什么? OPC官方说明文档 1 安全防护 本文阐述了控制网络以OPC接口接入信息网络应当采用的安全防护。 1.1 防火墙 防火墙是大家熟知的网络安全产品,并被用作控制网…

Jmeter —— 常用的几种断言方法(基本用法)

在使用JMeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过,本文 主要介绍几种常用的断言&…

【服务器 | 测试】如何在centos 7上面安装jmeter

安装之前需要几个环境,以下是列出的几个环境 CentOS 7.7 64位JDK 1.8JMeter 5.2 1. 下载jmeter安装包 JMeter是开源的工具,安装 JMeter 要先安装好 JDK 的环境,安装JDK在前面的文章已经讲到 JMeter最新版下载地址:Apache JMeter…

[npm]npm包的分类

[npm]npm包的分类 工具包的安装工具包的使用工具包的开发工具包的发布 node 与 npm 是一体的,只要安装了 node 的环境,那么你就可以使用 npm 命令,npm 是一个包管理工具; 自从可以使用 npm 后,npm 库中增加了各种包&a…

Git(8)——Git命令总结

一、简介 本篇文章将基于Git(4)——Git命令小总结,补充后续的Git使用命令 二、总结 # 添加远程连接 git remote add origin 远端地址# 推送本地代码 git push origin 分支名称# 拉取远端代码(第一次) git clone 远端克隆地址# 更新远端代码…