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

news2025/1/12 1:09:04

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.coloradmin.cn/o/1005048.html

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

相关文章

【正点原子STM32连载】 第三十章 PVD电压监控实验 摘自【正点原子】APM32F407最小系统板使用指南

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 第三…

VUE 的eslint 代码规范检查

报错: You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. 解决: 注释:...(config.dev.useEslint ? [creat…

ThreadLocal功能实现

模拟ThreadLocal功能实现 当前线程任意方法内操作连接对象 一个栈对应一个线程 , 一个方法调用另一个方法都是在一个线程内 , 只有执行了线程的start方法才会创建一个线程 定义一个Map集合 , key是当前线程(Thread.currentThread) , value是要绑定的数据(Connection对象) 以…

2023年澳大利亚标普ASX200指数研究报告

第一章 指数概况 1.1 指数基本情况 澳大利亚标普ASX200(S&P/ASX200)指数是由标准普尔(S&P)和澳大利亚证券交易所(Australian Securities Exchange, ASX)共同编制的主要股票市场指数,简…

【Linux-Day10-信号量,共享内存,消息队列】

信号量 信号量描述 信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目,获取资源 时,需要对信号量的值进行原子减一,该操作被称为 P 操作。 当信号量值为 0 时,代表没有资源可用,P 操作…

腾讯云服务器购买详细流程_配置选择_新手入门

腾讯云服务器购买流程直接在官方秒杀活动上购买比较划算,在云服务器CVM或轻量应用服务器页面自定义购买价格比较贵,但是自定义购买云服务器CPU内存带宽配置选择范围广,活动上购买只能选择固定的活动机,选择范围窄,但是…

消息队列--必须掌握的两个基础模式

目录 队列模式有什么设计的问题? 发布订阅模式生产者如何确认消息发往哪个队列? 总结 队列模式 我们都知道队列是一种数据结构吗,它的特性是先进先出,就跟我们平时在食堂打饭排队一样,排在前面的同学打完饭了就走了&a…

数据结构——排序算法——希尔排序

希尔排序本质上是对插入排序的一种优化,它利用了插入排序的简单,又克服了插入排序每次只交换相邻两个元素的缺点。它的基本思想是: 1.将待排序数组按照一定的间隔分为多个子数组,每组分别进行插入排序。这里按照间隔分组指的不是…

Optional<T>

java中的 Optional类&#xff1a; //Optional用于处理可能为空的值的容器类&#xff0c;目的为了解决空指针问题 public final class Optional<T>{//Return true if there is a value present, otherwise false.//Returns:true if there is a value present, otherwise…

Spring Boot @Value读不到Nacos配置中心的值。(properties配置文件)

读不到配置中心的值&#xff0c; 配置中心的配置文件名字&#xff08;Data ID的值&#xff09;要以.properties结尾。 如果是yaml&#xff0c;就以yaml命名。

大数据Flink(七十八):SQL 的水印操作(Watermark)

文章目录 SQL 的水印操作(Watermark) 一、为什么要有 WaterMark

计算由于海洋温度和盐度变化产生的比容海平面变化

近些年由于全球气候变暖&#xff0c;全球的海平面不断上升。目前的研究显示&#xff0c;造成海平面变化的原因主要有两个&#xff1a;一个是由于陆地质量的流入&#xff08;比如两级冰川的融化&#xff0c;冰雪以径流的形式汇入海洋&#xff0c;总体上使得海洋的总质量产生变化…

Redis新篇一:认识Redis

首先&#xff0c;很抱歉小伙伴们&#xff0c;前段时间一直都没有更新&#xff0c;我很抱歉&#xff0c;现在开始持续更新Redis相关内容啦&#xff01;有需要的小伙伴们可以持续关注一下小博主的新篇哦~ 希望对你们有帮助&#xff01; 作者&#xff1a;爱撸猫的程序员 博客地址…

<C++> 基于SSE实现图像二值化

基于SSE实现图像二值化 SSE介绍及使用可见&#xff1a;https://blog.csdn.net/thisiszdy/article/details/132512686 本文使用SSE指令集来实现图像二值化算法&#xff0c;同时对比OpenCV二值化算子及for循环求解二值化的效果及性能。 // opencvTest.cpp : 此文件包含 "m…

2011-2022年北大法宝省市县环保行政处罚数据

2011-2022年北大法宝省市县环保行政处罚数据 1、时间&#xff1a;2011-2022年 2、范围&#xff1a;全国各省份、各城市、各区县 3、来源&#xff1a;北大法宝 4、数据指标&#xff1a;地区代码、地区名称、地区等级、所属省份、所属城市、处罚年份、主题分类、案件数目 5、…

如何使用谷歌浏览器连接linux服务器SSH服务

环境&#xff1a; 谷歌浏览器 版本 116.0.5845.141&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09; Win10 专业版 安全外壳 (SSH)v.0.58 问题描述&#xff1a; 如何使用谷歌浏览器连接linux服务器SSH服务 解决方案&#xff1a; 1.找了有台安装好了这个插…

数据结构——排序算法——堆排序

堆排序过程如下&#xff1a; 1.用数列构建出一个大顶堆&#xff0c;取出堆顶的数字&#xff1b; 2.调整剩余的数字&#xff0c;构建出新的大顶堆&#xff0c;再次取出堆顶的数字&#xff1b; 3.循环往复&#xff0c;完成整个排序。 构建大顶堆有两种方式&#xff1a; 1.从 0 开…

2023更新:多功能短视频去水印工具微信小程序源码,带流量主功能(教程含源码)

简介&#xff1a; 这是一个自带去水印接口的多功能小程序&#xff0c;支持各大平台短视频去水印&#xff0c;保存封面、图集、标题等等&#xff0c;还可以本地图片去水印&#xff0c;图片拼接&#xff0c;九宫格切图&#xff0c;修改视频的MD5等等。当然&#xff0c;也支持流量…

LeetCode算法心得——和为k的子数组(前缀和+HashMap)

大家好&#xff0c;我是晴天学长&#xff0c;这是一个很重要的前缀和hash运用的题&#xff0c;为后面很多的题打基础&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。 1) .和为k的子数组 2) .算法思路 和为k的子数组 1.首先是前缀和 2.根据关系 s【…

Ceph入门到精通-S3 基准测试工具warp使用入门

S3 基准测试工具。 下载 下载适用于各种平台的二进制版本。 配置 可以使用命令行参数或环境变量配置 Warp。 可以使用 、 在命令行上指定要使用的 S3 服务器&#xff0c;也可以选择指定 TLS 和自定义区域。--host--access-key--secret-key--tls--region 也可以使用 、、 和…