Linux 内核设备驱动
设备模型跟踪所有对系统已知的驱动. 这个跟踪的主要原因是使驱动核心能匹配驱动和新 设备. 一旦驱动在系统中是已知的对象, 但是, 许多其他的事情变得有可能. 设备驱动可 输出和任何特定设备无关的信息和配置变量, 例如:
驱动由下列结构定义:
struct device_driver { char *name;
struct bus_type *bus; struct kobject kobj; struct list_head devices;
int (*probe)(struct device *dev); int (*remove)(struct device *dev);
void (*shutdown) (struct device *dev);
};
再一次, 几个结构成员被忽略( 全部内容见 <linux/device.h> ). 这里, name 是驱动的 名子( 它在 sysfs 中出现 ), bus 是这个驱动使用的总线类型, kobj 是必然的 kobject, devices 是当前绑定到这个驱动的所有设备的列表, probe 是一个函数被调用来查询一个 特定设备的存在(以及这个驱动是否可以使用它), remove 当设备从系统中去除时被调用, shutdown 在关闭时被调用来关闭设备.
使用 device_driver 结构的函数的形式, 现在应当看来是类似的(因此我们快速涵盖它 们). 注册函数是:
int driver_register(struct device_driver *drv); void driver_unregister(struct device_driver *drv);
通常的属性结构在:
struct driver_attribute { struct attribute attr;
ssize_t (*show)(struct device_driver *drv, char *buf); ssize_t (*store)(struct device_driver *drv, const char *buf, size_t count);
};
DRIVER_ATTR(name, mode, show, store);
以及属性文件以通常的方法创建:
int driver_create_file(struct device_driver *drv, struct driver_attribute *attr); void driver_remove_file(struct device_driver *drv, struct driver_attribute *attr);
bus_type 结构含有一个成员( drv_attrs ) 指向一套缺省属性, 对所有关联到这个总线 的驱动都创建.
相关文章
- 用linux mail命令发送邮件[Linux]
- Linux 有问必答:如何在 Linux 中永久修改 USB 设备权限
- linux下如何从FIT镜像(*.itb)中分离出内核、根文件系统和设备树?
- Linux安装Zookeeper(图文解说详细版)
- 《精通Linux设备驱动程序开发》——1.6 查看源代码
- 《嵌入式Linux开发实用教程》——4.3 块设备驱动
- Linux 内核 动态设备
- linux设备驱动文件结构
- Linux 下 Nand Flash 驱动说明
- linux设备驱动模型之/sys/目录注册
- 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件
- Linux—linux 查看一个文件有多少M
- Linux与Windows的设备驱动模型对比:架构、API 和开发环境比较
- 【嵌入式Linux驱动开发】八、LED驱动尽善尽美 - 设备树点亮一盏假的LED
- 【嵌入式Linux驱动开发】七、驱动开发的利器 - 设备树的闪亮登场
- 【正点原子Linux连载】第六十八章 Linux 块设备驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 【正点原子Linux连载】第五十四章 platform设备驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
- 深入理解Linux字符设备驱动
- Linux内核project导论——linux学习和职业曲线(刚開始学习的人,中级,高级都可參考)
- Linux 之 arm linux 板子与 ubuntu 使用 nfs 进行 mount 挂载进行文件传输的简单整理
- 【Linux】linux下用python获取底层硬件信息接口
- 7 个好玩的 Linux 命令-Linuxeden开源社区