目录
/* /sys/dev/block 父节点:/sys/dev/*/
/* /sys/dev/block 父节点:/sys/dev/*/
/* /sys/devices/system 父节点:/sys/devices/ */
/* /sys/firmware/devicetree 父节点:/sys/firmware/*/
/* /sys/devices/platform 父节点:/sys/devices/ */
/* /sys/kernel/ kernel/ksysfs.c */
/* /sys/block/ kernel/block/genhd.c */
/* /sys/module/ kernel/params.c */
/* /sys/power/ kernel/power/main.c */
sys$ ls -F ./
block/ bus/ class/ dev/ devices/ firmware/ fs/ hypervisor/ kernel/ module/ power/
static void __init do_basic_setup(void)
{
cpuset_init_smp();
driver_init();
init_irq_proc();
do_ctors();
do_initcalls();
}
driver_init:
/*设备相关初始化*/
/* /sys/devices/ */
struct kset *devices_kset;
注册:devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
/* /sys/dev/ */
static struct kobject *dev_kobj;
注册:dev_kobj = kobject_create_and_add("dev", NULL);
/* /sys/dev/block 父节点:/sys/dev/*/
struct kobject *sysfs_dev_block_kobj
sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj);
/* /sys/dev/block 父节点:/sys/dev/*/
struct kobject *sysfs_dev_char_kobj;
sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj);
/*bus初始化*/
/* /sys/bus/ */
static struct kset *bus_kset;
bus_kset = kset_create_and_add("bus", &bus_uevent_ops, NULL);
/* /sys/devices/system 父节点:/sys/devices/ */
static struct kset *system_kset;
system_kset = kset_create_and_add("system", NULL, &devices_kset->kobj);
/* /sys/class/ */
/* Hotplug events for classes go to the class subsys */
static struct kset *class_kset;
class_kset = kset_create_and_add("class", NULL, NULL);
/* /sys/firmware/ */
struct kobject *firmware_kobj;
firmware_kobj = kobject_create_and_add("firmware", NULL);
/* /sys/hypervisor/ */
struct kobject *hypervisor_kobj;
hypervisor_kobj = kobject_create_and_add("hypervisor", NULL);
/* /sys/firmware/devicetree 父节点:/sys/firmware/*/
struct kset *of_kset;
of_kset = kset_create_and_add("devicetree", NULL, firmware_kobj);
/* /sys/devices/platform 父节点:/sys/devices/ */
struct device platform_bus;
platform_bus_init=>device_register(&platform_bus)do_initcalls:
/* /sys/kernel/ kernel/ksysfs.c */
struct kobject *kernel_kobj;
kernel_kobj = kobject_create_and_add("kernel", NULL);
ksysfs_init:
core_initcall(ksysfs_init);
#define core_initcall(fn) __define_initcall(fn, 1)
/* /sys/block/ kernel/block/genhd.c */
static struct kobject *block_depr;
/* create top-level block dir */
block_depr = kobject_create_and_add("block", NULL);
static int __init genhd_device_init(void)
subsys_initcall(genhd_device_init);
#define subsys_initcall(fn) __define_initcall(fn, 4)
/* /sys/fs/ fs/namespace.c */
void __init mnt_init(void)
struct kobject *fs_kobj;
fs_kobj = kobject_create_and_add("fs", NULL);
start_kernel=>vfs_caches_init=>mnt_init
/* /sys/module/ kernel/params.c */
struct kset *module_kset;
module_kset = kset_create_and_add("module", &module_uevent_ops, NULL);
static int __init param_sysfs_init(void)
subsys_initcall(param_sysfs_init);
#define subsys_initcall(fn) __define_initcall(fn, 4)
/* /sys/power/ kernel/power/main.c */
struct kobject *power_kobj;
power_kobj = kobject_create_and_add("power", NULL);
static int __init pm_init(void)
core_initcall(pm_init);
#define core_initcall(fn) __define_initcall(fn, 1)