Linux内核模块和Linux fs 与 sysfs 二
来源:互联网 发布:mac怎么卸载office 编辑:程序博客网 时间:2024/05/29 10:06
主要参考整理《Linux设备驱动开发详解》
2. kobject 内核对象----设备模型的核心部分:
kobject 结构体: 间: /linux/include/linux/kobject.h
kobj_type 结构体:
sys_ops 结构体 :
操作 kobject 的函数 :
初始化kobject:
void kobject_init(struct kobject *kobj, struct kobj_type *ktype);
设置kobject 的名称:
int kobject_set_name(struct kobject *kobj, const char *name, ...)
__attribute__((format(printf, 2, 3)));
清除 kobject :
void kobject_del(struct kobject *kobj);
。。。。。。。。。
具体的操作可以在使用的时候参考。
3. kset 结构体 : kset 是具有相同类型的kobject的集合,其结构体如下:
注: 形象地来说: kset 类似于一个具有相同属性的链表集合,kobject 则是一个个单独的个体;而当koject 进入链表或者退出链表是会产生一些事件(kset_uevent_ops)
kset_uevent_ops 结构体;
4. subsystem内核对象子系统: subsystem是一系列kset的集合,描述系统中某一类设备子系统。
5. Linux设备模型组件:
1) 系统中的任一设备在设备模型(udev)中都是通过一个 device 对象描述,其结构如下:
device描述了系统中设备的相关信息以及相互间的关系,以及使用到的总线和使用到得驱动程序。
Linux中还提供了一些操作device设备的方法:
extern int __must_check device_register(struct device *dev);
extern void device_unregister(struct device *dev);
extern void device_initialize(struct device *dev);
extern int __must_check device_add(struct device *dev);
extern void device_del(struct device *dev);
extern int device_for_each_child(struct device *dev, void *data,
int (*fn)(struct device *dev, void *data));
extern struct device *device_find_child(struct device *dev, void *data,
int (*match)(struct device *dev, void *data));
extern int device_rename(struct device *dev, char *new_name);
extern int device_move(struct device *dev, struct device *new_parent);
注意: 在linux中, device结构体一般不会单独使用,而是结合device使用: 例如在wm8350中 见:linux/include/linux/mfs/wm8350/core.h
2)系统中的每个驱动程序都有一个device_driver对象描述:
3) 系统中的总线用 struct bus_type 表示
4) 系统中的设备类用 struct class ,表示某一类设备。
5) 设备类的驱动程序: struct class_device :
6) 当发生设备加入或者删除时会调用 class_interface 的成员函数:
7) 属性:
- Linux内核模块和Linux fs 与 sysfs 二
- Linux内核模块和Linux fs 与 sysfs 一
- linux内核设计与实现之kobject和sysfs
- linux内核sysfs详解
- linux内核sysfs详解
- linux内核sysfs详解
- linux内核sysfs详解
- linux内核sysfs详解
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- (转载) 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 【转载】在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink
- C题一道,,= =
- c++访问标号、关键字和封装
- spring源码之旅(2)_applicationcontext启动流程分析
- NSIS 常用技术要点
- NSIS获取本机IP地址写入配置文件
- Linux内核模块和Linux fs 与 sysfs 二
- lex&yacc安装配置
- Java 名词
- linux内核sys_read流程分析
- 找工作
- 【转】PHP中GBK和UTF8乱码解决方案
- 炒股心得
- VS2008中使用GDI+
- 二:单层和两层的应用程序