{
retval = kobject_add(kobj, parent, "%s", name);
}
int kobject_add(struct kobject *kobj, struct kobject *parent,
const char *fmt, ...)
{
retval = kobject_add_varg(kobj, parent, fmt, args);
}
static int kobject_add_varg(struct kobject *kobj, struct kobject *parent,
const char *fmt, va_list vargs)
{
return kobject_add_internal(kobj);
}
剩下的东西就是在《设备初始化缩水篇(一)》里都贴过的
参考《设备初始化缩水篇(一)》dev_kobj、firmware_kobj的parent都是NULL,所以在/sys目录下生成了dev和firmware两个目录(我虚拟机运行的Antergos,内核版本为3.14.4.1,没有hypervisor目录,不知道是啥原因)
sysfs_dev_block_kobj 和sysfs_dev_char_kobj 的parent都是dev_kobj,所以/sys/dev 目录下生成了block和char 两个文件夹
目前这里的分析总共生成了/sys下的devices、bus、class、dev和firmware五个目录,/sys/devices/system、/sys/dev/block、/sys/dev/char三个子目录,除了有关虚拟化的那个目录之外,《设备初始化缩水篇(一)》中初始化的语句都可以在实际系统中看到
不过实际系统中/sys目录下不止这五个目录,我这里还可以看到block、fs、kernel、module和power五个目录,有机会了再继续看是哪里生成的