Linux驱动开发3——devfs udev procfs sysfs debugfs傻傻地分不清楚
Linux调试文件系统
1.1、procfs
早期的Linux内核中,内核通过procfs输出调试信息,可以在用户态通过读写procfs节点与内核进行交互,用来获取处理器、内存、设备驱动、进程等各种信息。但是随着Linux的普及,Linux驱动开发者往procfs中添加了大量的设备驱动相关的节点,因此,sysfs应运而生。
mount -t proc nondev /procfs
1.2、sysfs
sysfs基于kobject实现,而kobject是Linux内核设备驱动模型的基础,因此,sysfs是天然的为Linux设备驱动而服务的,主要用来添加相应的节点从而方便设备驱动的调试。
mount -t sys nondev /sys
1.3、debugfs
debugfs,顾名思义,就是为了内核调试而生的,主要是Linux内核向用户态输出调试信息和异常信息。
mount -t debugfs nondev /debugfs
Linux设备文件系统
2.1、devfs
Linux 2.6内核之前,使用devfs文件系统管理Linux设备文件,但是所有的设备文件都必须使用mknod命令创建,无法动态创建设备文件。
2.2、sysfs+udev
Linux 2.6内核引入了sysfs文件系统,一方面是为了给procfs减负,另一方面是为了方便管理设备文件。
sysfs基于kobject实现,Linux驱动模块可以添加相应的节点进行驱动调试;除此之外, 可以通过class_create()和device_create()动态创建设备文件。这就是udev的事情,udevd是用户态的守护进程,class_create()和device_create()在sysfs中创建相应的节点并触发uevent,udevd收到uevent事件之后,通过解析sysfs节点,按照/etc/udev/udev.conf规则在/dev下创建设备文件。
Linux驱动开发3——devfs udev procfs sysfs debugfs傻傻地分不清楚的更多相关文章
- Linux 驱动开发
		
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
 - Linux驱动开发必看详解神秘内核(完全转载)
		
Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入L ...
 - Linux驱动开发:USB驱动之usb_skel分析
		
在学习了这么些天的驱动之后,个人觉得驱动就是个架构的问题,只要把架构弄清楚了 然后往里面添砖加瓦就可以了,所以似乎看起来不是太困难,但也许是是我经验不足吧,这只能算是个人浅见了 这两天在学习USB驱动 ...
 - 嵌入式Linux驱动开发日记
		
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...
 - 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
		
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
 - 【转】linux驱动开发的经典书籍
		
原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书 ...
 - Linux驱动开发 -- 打开dev_dbg()
		
Linux驱动开发 -- 打开dev_dbg() -- :: 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KER ...
 - Linux驱动开发学习的一些必要步骤
		
1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...
 - 驱动编程思想之初体验   ---------------   嵌入式linux驱动开发之点亮LED
		
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
 
随机推荐
- java基础笔记(3)
			
捕获异常: try{ ...... }catch(Exception e){ ...... }finally{ ...... } 注意:在写多重catch时需先小后大: 自定义异常: String字符 ...
 - Codeforces 1262D Optimal Subsequences(BIT+二分)
			
首先比较容易想到肯定是前k大的元素,那么我们可以先对其进行sort,如果数值一样返回下标小的(见题意),接下里处理的时候我们发现需要将一个元素下标插入到有序序列并且需要访问第几个元素是什么,那么我们可 ...
 - 【LGR-063】洛谷11月月赛 I & MtOI2019 Ex Div.2
			
[MtOI2019]黑蚊子多: 送分向水题,直接模拟即可. #include<iostream> #include<cstdio> #define N 1505 using n ...
 - [LeetCode] 47. 全排列 II
			
题目链接 : https://leetcode-cn.com/problems/permutations-ii/ 题目描述: 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [ ...
 - Python 入门之 推导式
			
Python 入门之 推导式 推导式就是构建比较有规律的列表,生成器,字典等一种简便的方式 1.推导式 (1)列表推导式 : <1> 普通循环: [变量 for循环] print([i f ...
 - 模板 - 无旋Treap
			
一般而言作为一棵平衡树只需要插入,删除,值求排名,排名求值,前驱,后继,六个接口. #include<bits/stdc++.h> using namespace std; typedef ...
 - 破解mysql
			
https://blog.csdn.net/lian_easel/article/details/78734240 破解mysql
 - 深入了解RabbitMQ工作原理及简单使用
			
深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...
 - UITableViewCell选中后子View背景色被Clear
			
在TableView中,当cell 处于Hightlighted(高亮)或者Selected(选中)状态下,Cell上的子控件的背景颜色会被 Clear. 解决方法:(4种) 1. 直接设置子控件的 ...
 - python 模块发布及使用
			
将模块(此处名为nester)写好后,与setup.py放入同一个文件夹中: //setup.py from distutils.core import setup setup( name=" ...