uevent
分析
2010-10-01 12:35 6082
人阅读
评论
(2)
收藏
举报
structactionfilterclassshellpath
目录
(?)[+]
1
.
kobject, ktype, kset
kobject
代表
sysfs
中的目录。
ktype
代表
kobject
的类型,
主要包含
release
函数和
attr
的读写函数。
比如,
所有
的
bus
都有同一个
bus_type
;所有的
class
都有同一个
class_type
。
kset
包含了
subsystem
概念,
kset
本身也是一个
kobject
,所以里面包含了一个
kobject
对象。另外,
kset
中包含
kset_uevent_ops
,里面主要定义了三个函数
int (*filter)(struct kset *kset, struct kobject *kobj);
const char *(*name)(struct kset *kset, struct kobject *kobj);
int (*uevent)(struct kset *kset, struct kobject *kobj, struct kobj_uevent_env
*env);
这三个函数都与
uevent
相关。
filter
用于判断
uevent
是否要发出去。
name
用于得
到
subsystem
的名字。
uevent
用于填充
env
变量。
2
.
uevent
内核部分
uevent
是
sysfs
向用户空间发出的消息。比如,
device_add
函数中,会调用
kobject_uevent(&dev->kobj, KOBJ_ADD);
这里
kobj
是发消息的
kobj
,
KOBJ_ADD
是发出的事件。
uevent
的事件在
kobject_action
中定义:
enum kobject_action {
KOBJ_ADD,
KOBJ_REMOVE,
KOBJ_CHANGE,
KOBJ_MOVE,
KOBJ_ONLINE,
KOBJ_OFFLINE,
KOBJ_MAX
};
int kobject_uevent(struct kobject *kobj, enum kobject_action action)