/*struct kobj_type的声明*/
struct kobj_type
{
/*用于释放kobject*/
void (*release)(struct kobject *kobj);
/*sys的操作表*/
const struct sysfs_ops *sys_ops;
/*内核对象的属性,对应于sys文件系统的文件*/
struct attribute **default_attrs;
};
struct kobj_attribute
{
struct attribute attr;
ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr, char *buf);
ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count);
};
struct attribute
{
const char *name;
struct module *owner;
mode_t mode;
}
/**
* kobject初始化
**/
void kobject_init(struct kobject *kobj, struct kobj_type *ktype)
{
char *err_str;
/*参数检查*/
if (!kobj) {
err_str = "invalid kobject pointer!";
goto error;
}
if (!ktype) {
err_str = "must have a ktype to be initialized properly!\n";
goto error;
}
/*不能重复初始化*/
if (kobj->state_initialized) {
/* do not error out as sometimes we can recover */
printk(KERN_ERR "kobject
Linux驱动模型——kobject剖析
最新推荐文章于 2021-08-08 23:26:12 发布