Chinaunix首页 | 论坛 | 博客
  • 博客访问: 176068
  • 博文数量: 22
  • 博客积分: 592
  • 博客等级: 中士
  • 技术积分: 344
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-22 14:49
文章分类

全部博文(22)

文章存档

2013年(2)

2012年(6)

2011年(14)

我的朋友

分类: LINUX

2011-05-24 09:56:38

    linux设备模型通过sysfs文件系统向用户展示了linux设备的拓扑图,其最基本的元素是kobject结构。每个kobject都对应一个sysfs文件系统中的一个文件夹,你可以将kobject理解为c++中的基类,每个要在sysfs文件系统中生成文件夹的设备都必须内嵌一个kobject结构。下面谈谈kobject的用法。
一.相关结构体
 struct kobject
{
        const char  *name;           //kobject名称,也就是文件夹的名字
        struct kobject  *parent;    //父指针,所属的文件夹
        struct kset  *kset;              //kobject对象的集合体
        struct kobj_type *ktype;   //文件的相应属性和操作
        struct kref  kref;                //kobject引用计数
        .......................
};
struct kobj_type
{
    void (*release)(struct kobject *);//当kobject的引用计数为0时调用
    struct sysfs_ops * sysfs_ops;       //读该文件中属性(文件)时,将该属性(attribute结构)传给sysfs_ops中的show 函数,写类似。
    struct attribute **default_attrs; //指针数组,每个指针指向一个属性,且最后一个元素为NULL
};
二.相关函数
 /*功能:初始化并注册一个kobject,函数成功返回时,假如第三参数为NULL,在/sys/目录下会生成相应的文件夹,并且在该目录下会根据kobj_type生成相应的kobject属性
参数:需要注册的kobject,该kobject包含的kobj_type,所属上层kobject,该kobject名称
*/
int kobject_add_and_init(struct kobject*,struct kobj_type *,struct kobject*,chat *)

void kobject_del(struct kobject *)//注销kobject
阅读(1029) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

cqqjliyuan2011-05-24 11:11:30

cqqjliyuan2011-05-24 11:11:19