Nucleus
Barry Small bug-fixes e59f635 (3 years, 2 months ago)
#include <sys/stat.h>
#include <nucleus/vfs.h>
extern InodeOps devfsInodeOps;
extern FileOps devfsFileOps;
Inode *devfs_alloc_inode(SuperBlock *sb);
SuperOps devfsSuperOps = {
.alloc_inode = devfs_alloc_inode,
};
/* Mount a devfs instance */
Inode *
devfs_mount(FSType *type, int flags, const char *dev, void *data)
{
static SuperBlock *super = NULL;
if (!super) {
super = new(&superBlockType);
super->type = get(type);
super->ops = &devfsSuperOps;
}
static Inode *inode = NULL;
if (!inode) {
inode = super_alloc_inode(super);
inode->mode = S_IFDIR | 0755;
super->root = inode;
}
return inode;
}
/* Allocate an inode */
Inode *
devfs_alloc_inode(SuperBlock *sb)
{
Inode *inode = new(&inodeType);
inode->ops = &devfsInodeOps;
inode->fileOps = &devfsFileOps;
inode->nlink = 1;
return inode;
}