linux 中的3类驱动程序
1.字符设备驱动
I/O传输过程中以字符为单位进行传输的设备。如键盘。
write :操作就是从应用程序接收数据送到硬件。
read :操作就是从硬件读取数据并交给应用程序。
ioctl: 应用程序提供对硬件行为的控制
open:应用程序打开设备时对设备进行初始化
release :应用程序关闭设备时的操作
static struct file_operations my driver_fops={
owner :THIS_Module,
write:mydriver_write,
read:mydriver_read,
ioctl:mydriver_ioctl,
open: mydriver_open,
release:mydriver_release,
};
module_exit() 用于向内核声明退出。
字符设备驱动程序开发基本步骤如下:
1.确定主设备号和次设备号
2.实现字符驱动程序,先实现file_operations 结构体,然后实现初始化函数并注册字符设备,然后实现销毁函数并释放字符设备。
3.创建设备文件节点。
块设备驱动
块设备只能以块为单位接收输入返回输出。
块设备需要缓冲区。
块设备可以随机访问。字符设备只能顺序读写。
struct block_device_operations
int(*open)(struct inode *,stuct file*);
int (*release)
int(*ioctl)
int(*unlock_ioctl)
...
....
网络设备驱动
net_device 表示网络设备接口。
网络设备媒介层
网络设备驱动层
网络设备接口层
网络协议接口层
linux 中的3类驱动程序相关推荐
- linux怎么自动装驱动程序,linux中如何安装设备驱动程序
两种方式来寻找驱动程序 一.用户界面 如果是一个刚从 Windows 或 MacOS 转过来的 Linux 新手,那你会很高兴知道 Linux 也提供了一个通过向导式的程序来查看驱动程序是否可用的方法 ...
- java编译命令 Linux,通过命令行在linux中编译Java类
嗨,谢谢你花时间回答我的问题. 我的根文件夹中有两个文件(〜/).Main.Java和TestMain.java.Main.java编译并运行顺利.另一方面,TestMain没有.TestMain基本 ...
- Linux中的Java类,Java基础入门学习-Java中类的属性
Java基础入门学习-Java中类的属性 发布时间:2006-05-27 00:46:15来源:红联作者:WWW Public.private.protected显示了三种类中的属性和服务的类型,pu ...
- Linux驱动(14)--字符类设备与驱动
字符类设备 1. 静态申请字符类设备号 1.1 所需函数与头文件 1.2 源码与注释 1.3 运行结果 2. 动态申请字符类设备号 2.1 所需函数与头文件 2.2 源码与注释 2.3 运行结果 3. ...
- linux中I/O设备分为两类:字符设备和块设备。
Linux中I/O设备分为两类:字符设备和块设备.两种设备本身没有严格限制,但是,基于不同的功能进行了分类. (1)字符设备:提供连续的数据流,应用程序可以顺序读取,通常不支持随机存取.相反,此类设备 ...
- 嵌入式Linux中I2C设备驱动程序的研究与实现
I2C是"Inter Integrated Circuit Bus"的缩写,中文译成"内部集成电路总线", 它是Philips 公司于20 世纪80 年代研发成 ...
- linux中不识别memcy,c - Linux设备驱动程序:找不到符号“memcpy” - 堆栈内存溢出...
我正在尝试编写Linux设备驱动程序. 我已经让它工作得很好,直到我尝试使用"memcpy". 我甚至没有得到编译器错误,当我"制造"它只是警告我: WARNI ...
- linux中scsi驱动程序,探索 Linux 通用 SCSI 驱动器
转载:https://www.ibm.com/developerworks/cn/linux/l-scsi-api/#ibm-pcon SCSI 客户机/服务器模型 在主机和存储介质进行通信期间,主机 ...
- 超专业解析!10分钟带你搞懂Linux中直接I/O原理
导语 | 本文主要以一张图为基础,向大家介绍Linux在I/O上做了哪些事情,即Linux中直接I/O原理,希望本文的经验和思路能为读者提供一些帮助和思考. 引言 我们先看一张图: 这张图大体上描述了 ...
- linux中的热插拔和mdev机制
mdev手册(自己翻译的留着看) mdev实现U盘或SD卡的自动挂载 mdev的使用以及mdev.conf的规则配置--busybox linux中的热插拔和mdev机制 关于实现udev/mdev自 ...
最新文章
- Django源码分析10:makemigrations命令概述
- python多久学会自学-python自学多久
- 用python简单处理图片(2):图像通道\几何变换\裁剪
- 五分钟快速搭建Serverless免费邮件服务
- 2021 程序媛跳槽记:学习计划篇(已收获字节等offer)
- 帝国CMS7.5响应式后台美化模板 支持GBK+UTF
- can通道采样频率_关于CAN通信速率设置
- 新华三模拟器STP和RSTP及其MSTP的作用与配置
- 四川师范大学大学计算机基础,大学计算机基础课程教学改革探索——以四川师范大学为例...
- ①变量、常量、数据类型解释 ②标识符命原则 ③sizeof使用原则 ④float型科学计数法 ⑤字符转换到ASCII表 ⑥\t 的使用意义【黑马程序员视频】
- 2010年度十大心理学发现
- 音乐播放器制作 (HTML + CSS + JavaScript)
- 人生没有白走的路,走过的都算数
- 产品可用性原则:网页设计点睛秘笈
- Hive in、exists 和 left semi join
- js ios调用ios方法_通过iOS 13的模式演示调用生命周期方法
- SAR信号处理之窗函数9——凯泽(Kaiser)窗
- 什么硬技能,什么是软技能,怎么提高它们!
- cavans图形绘制(直线、矩形、原型、贝塞尔曲线、渐变背景)
- 苏泊尔 CFXB30FC19电源板 原理图 苏泊尔FC19维修手册摘录