kobject编程模式

                                                                                                                     kobject编程模式

      在sysfs中创建一个简单的子目录/sys/kernel/foo/,在这个目录下,还创建了1个文件:value。如果往这些文件中写入一个整数,随后可以读出。

      kobject编程模式包括以下几个步骤。

     1. 定义内核对象结构

      我们将这个内核对象结构命名为foo,前面提到,应该将struct kobject作为它的一个域,此外,定义另一个整形域对应于要读写的属性。

     2. 定义属性类型

      由于内核对象有属性,需要定义一个新的属性类型foo_attribute。它以struct attribute作为一个域,show和store是对属性的操作方法。

     3. 声明属性

     接下来,我们用宏FOO_ATTR来声明要用到的value属性,它的访问权限为0666,show和store回调函数实现分别为value_show和value_store,

    它们将对sysfs文件系统中value文件的读/写操作转变为对foo_obj内核对象的value域的操作。

     4.实现内核对象的sysfs操作

     内核对象foo_obj的sysfs操作表(实际上是它所属设备类型的操作表)为foo_sysfs_op,对应的show和store回调函数分别实例化为foo_attr_show和

    foo_attr_store.

    foo_attr_show和foo_attr_store负责将kobject和attribute结构转换为具体的内核对象(foo_obj)和对象属性(foo_attribute),然后调用对象属性的相应

    方法。就这个例子来讲,它最终调用的是value_show和value_store。

    5.定义内核对象释放方法

     除了sysfs操作表,对象类型还应该定义释放内核对象的方法。对于内核对象foo_obj,释放方法被定义为foo_release。它在内核对象的引用计数递减为

    0时,释放内核对象占用的内存空间。

    6.声明内核对象类型

    7.封装对象属性添加和删除方法

    8. 定义对象创建和销毁方法

    9. 实现模块加载和卸载方法

    

你可能感兴趣的:(编程,struct)