linux-uevent_and_sysfs
srclinuxandroidkernelLibKobject.c
struct kobject *kobject_create_and_add(const char *name, struct kobject *parent)
此函数会创建一个kobject对象,并根据参数parent决定添加到sysfs中/sys的某个目录中,如果parent==NULL,则kobject对象就会直接被创建添加到/sys根目录。如下:
Genhd.c (srclinuxandroidkernelblock): block_depr = kobject_create_and_add("block", NULL);
Gen_vkeys.c(srclinuxandroidkerneldriversinputtouchscreen):vkey_obj = kobject_create_and_add("board_properties", NULL);
Core.c (srclinuxandroidkerneldriversbase): dev_kobj = kobject_create_and_add("dev", NULL);
Firmware.c (srclinuxandroidkerneldriversbase): firmware_kobj = kobject_create_and_add("firmware", NULL);
Namespace.c (srclinuxandroidkernelfs): fs_kobj = kobject_create_and_add("fs", NULL);
Ksysfs.c (srclinuxandroidkernelkernel): kernel_kobj = kobject_create_and_add("kernel", NULL);
Main.c (srclinuxandroidkernelkernelpower): power_kobj = kobject_create_and_add("power", NULL);
而有parent的就会创建到对应的parent目录下:
Core.c (srclinuxandroidkerneldriversbase): sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj); 这里的dev_kobj是已经创建好了的,dev_kobj = kobject_create_and_add("dev", NULL);
Core.c (srclinuxandroidkerneldriversbase): sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj);
那么/sys这个目录又是哪里来的呢,它是属于根文件系统的。编译打包加载后就会有,如下: