图解字符驱动模块设计思路

一、图解字符驱动模块设计思路

  • 用户空间调用

  • VFS 层 (虚拟文件系统)

  • 字符设备层

  • 驱动程序实现

二、应用代码

用户程序通过标准的系统调用(如 openreadwrite 等)与字符设备交互。例如:

int fd = open("/dev/mydevice", O_RDWR); write(fd, buffer, size); read(fd, buffer, size); close(fd);

目标:将用户的请求从用户空间传递到内核空间的字符驱动。

三、VFS 层 (虚拟文件系统)

系统调用会通过 VFS (Virtual File System ) 进入内核。这一层的主要任务是将与文件系统相关的操作抽象化:

  • VFS 通过 file_operations 结构体找到设备驱动程序提供的对应实现。

  • file_operations 是字符设备的核心结构体,它定义了驱动程序如何处理系统调用:

struct file_operations { .open = my_open, .read = my_read, .write = my_write, .release = my_close, // 其他操作 };

四、驱动程序实现

应用程序利用 open 函数打开设备文件后获取类型信息和主设备号,再利用该信息得到注册在 chrdevs 的设备驱动程序 index,接着利用获取到的 index 值,获得注册在 chrdevs 变量上的 file_operations 结构体地址,该结构体记录了字符设备驱动程序使用其注册函数设定相应低级文件输入输出函数的内容。

如下图所示,表示了设备驱动程序的运作方式。

相关推荐
草莓熊Lotso6 小时前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
历程里程碑6 小时前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
wdfk_prog14 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
盟接之桥15 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
忆~遂愿15 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能
湘-枫叶情缘15 小时前
1990:种下那棵不落叶的树-第6集 圆明园的对话
linux·系统架构
Fcy64816 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满16 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠16 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
Gary Studio16 小时前
rk芯片驱动编写
linux·学习