retval = kobject_set_name_vargs(kobj, fmt, vargs); //设置kobject的name if (retval) { printk(KERN_ERR "kobject: can not set name properly!\n"); return retval; } kobj->parent = parent; //设置parent成员 return kobject_add_internal(kobj); //调用此函数进行进一步add操作 } static int...
kobject_set_name()函数的作用是设置kobj的名称,它通过调用kobject_set_name_vargs()来实现,需要注意的时,kobject_set_name()仅限于kobject添加到体系之前使用,因为该函数只是修改了名字,并未通知到用户空间。 /** * kobject_init - initialize a kobject structure * @kobj: pointer to the kobject to ...
printk(KERN_ERR"kobject: can not set name properly!\n"); returnretval; } kobj->parent = parent; returnkobject_add_internal(kobj); } kobject_set_name_vargs kobject_set_name_vargs 函数:将字符串赋予 kobject->name lib/kobject.c intkobject_set_name_vargs(struct kobject *kobj,constcha...
初始化后,必须采用kobject_set_name()函数为kobject设置名称: int kobject_set_name(struct kobject *kobj, const char * fmt, ...); 初始化kobject并设置名称后,还需要为它设置kset字段以及可能的ktype字段(可选)。如果kset没有被提供,那么仅需要设置ktype,否则kset中的ktype字段将优先被使用。 引用计数 ...
if (!kobj->name || !kobj->name[0]) { WARN(1, "kobject: (%p): attempted to be registered with empty name!\n", kobj); return -EINVAL; } parent = kobject_get(kobj->parent); /* join kset if set, use it as parent if we do not already have one */ ...
这个函数中,动态分配了kset实例,调用kobject_set_name设置kset->kobj->name为bus,也就是我们要创建的目录bus。 同时这里kset->kobj.parent为NULL,也就是没有父对象。 因为要创建的bus目录是在sysfs所在的根目录创建的,自然没有父对象。 随后简要看下由kobject_set_name函数调用引发的一系列调用。
如果kobject已经被加入到系统当中,就必须使用kobject_rename函数 代码语言:javascript 复制 intkobject_set_name_vargs(struct kobject*kobj,constchar*fmt,va_list vargs){constchar*old_name=kobj->name;char*s;if(kobj->name&&!fmt)//名字存在返回return0;kobj->name=kvasprintf(GFP_KERNEL,fmt,vargs);if...
int kobject_set_name(struct kobject *kobj, const char *fmt, ...)//设置kobject目录名字 (struct kobject *kobj)/*从Linux系统中删除kobj对象*/ *kobject_get(struct kobject *kobj) //将kobject对象的引用计数加1,同时返回该对象指针 (struct kobject *kobj) ...
kobject_set_name该函数用来设定kobJect中的name成员,函数原型为:int kobject_set_name(struct kobject *kobj, const char *fmt, ...)kobject_init该函数用来初始化一个内核对象的kobject结构,其核心功能代码为void kobject_init(struct kobject *kobj, struct kobj_type *ktype) { char *err_str; if (...
从sysfs文件系统中删除一个kobject对应文件目录,需要使用函数kobject_decl() void kobject_del(struct kobject *kobj) int kobject_set_name(struct kobject *kobj, const char *fmt, ...)//设置kobject对象在sysfs中的名字 int sysfs_create_dir(struct kobject * kobj)//在sysfs文件系统中创建目录 ...