Nucleus
Barry Inode mknod e440b5d (3 years, 2 months ago)
diff --git a/vfs/inode.c b/vfs/inode.c
index e4414cf..e4ed8a8 100644
--- a/vfs/inode.c
+++ b/vfs/inode.c
@@ -186,3 +186,20 @@ inode_rmdir(Inode *inode, DirEntry *entry)
return err;
}
+/* Make a special node wrapper */
+int
+inode_mknod(Inode *inode, DirEntry *entry, mode_t mode, dev_t dev)
+{
+ if (!inode->ops || !inode->ops->mknod)
+ return -EINVAL;
+ lock(inode);
+ int err = inode->ops->mknod(inode, entry, mode, dev);
+ if (!err) {
+ add(inode->dirEntries, entry);
+ entry->inode = super_alloc_inode(inode->super);
+ entry->inode->mode = mode;
+ entry->inode->dev = dev;
+ }
+ unlock(inode);
+ return err;
+}