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) 属性:

          

原创粉丝点击