/* * This file controls the Virtual File System for the kernel. It implements a * generic File System, which can hook other File Systems. This forms a key * part of the kernel, and is used for loading programs and some higher-level * IPC and device management. */ #include #include #include #include extern FileOps tmpfsFileOps; Inode *tmpfs_mount(FSType *type, int flags, const char *dev, void *data); Inode *devfs_mount(FSType *type, int flags, const char *dev, void *data); Inode *ext2fs_mount(FSType *type, int flags, const char *dev, void *data); /* Initialise the Virtual File System */ void init_vfs(void) { register_fstype("tmpfs", tmpfs_mount); register_fstype("devfs", devfs_mount); register_fstype("ext2fs", ext2fs_mount); mount("tmpfs", NULL, "tmpfs", 0, NULL); mkdir("dev", 0755); mount("devfs", "/dev", "devfs", 0, NULL); } /* Create an anonymous file */ File * create_anonymous_file(void) { File *file = new(&fileType); file->inode = new(&inodeType); file->ops = &tmpfsFileOps; return file; }