Nucleus
Barry System headers (remove libc dependency) 18495cf (3 years, 2 months ago)
/*
* 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 <sys/mount.h>
#include <sys/stat.h>
#include <nucleus/object.h>
#include <nucleus/vfs.h>
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;
}