锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.鍐呮牳鍚姩璋冪敤start_kernel鍑芥暟榪涜鍒濆鍖栥?
{
buffer_init();
key_init();
security_init();
vfs_caches_init(totalram_pages);//678琛岋紝vfs鍒濆鍖?/span>
signals_init();
}
void __init vfs_caches_init(unsigned long mempages)
{
.......
dcache_init();
inode_init();
files_init(mempages);
mnt_init(); //mnt鍒濆鍖?/span>
bdev_cache_init();
chrdev_init();
}
3.鍦╲fs_caches_init璋冪敤fs\namespace.c 2321琛岀殑mnt_init鍑芥暟
{


init_rootfs(); //鍒濆鍖杛ootfs鏂囦歡緋葷粺
init_mount_tree(); //鍒濆鍖栧姞杞芥爲(wèi)
}
{
int err;
err = bdi_init(&ramfs_backing_dev_info);
if (err)
return err;
err = register_filesystem(&rootfs_fs_type);//娉ㄥ唽rootfs鏂囦歡緋葷粺
if (err)
bdi_destroy(&ramfs_backing_dev_info);
return err;
}
.name = "rootfs",
.get_sb = rootfs_get_sb,
.kill_sb = kill_litter_super,
};
5.璋冪敤register_filesystem鍑芥暟灝唕ootfs娉ㄥ唽鍒?span style="font-weight: bold; color: #ff0000; font-family: 榛戜綋;">file_systems鏂囦歡緋葷粺涓?br>
{
int res = 0;
struct file_system_type ** p;
BUG_ON(strchr(fs->name, '.'));
if (fs->next)
return -EBUSY;
INIT_LIST_HEAD(&fs->fs_supers);
write_lock(&file_systems_lock);
p = find_filesystem(fs->name, strlen(fs->name));//鏌ユ壘鍒版枃浠剁郴緇熷姞杞戒綅緗?br> if (*p)
res = -EBUSY;
else
*p = fs;
write_unlock(&file_systems_lock);
return res;
}
]]>