Nucleus
Barry Device file system 88d672a (3 years, 3 months ago)
diff --git a/vfs/inode.c b/vfs/inode.c
index c64542d..3f760e7 100644
--- a/vfs/inode.c
+++ b/vfs/inode.c
@@ -129,3 +129,36 @@ end:
unlock(inode);
return entry;
}
+
+/* Make a directory wrapper */
+int
+inode_mkdir(Inode *inode, DirEntry *entry, mode_t mode)
+{
+ if (!inode->ops || !inode->ops->mkdir)
+ return -EINVAL;
+ lock(inode);
+ int err = inode->ops->mkdir(inode, entry, mode);
+ if (!err) {
+ add(inode->dirEntries, entry);
+ entry->inode = super_alloc_inode(inode->super);
+ entry->inode->mode = mode | S_IFDIR;
+ }
+ unlock(inode);
+ return err;
+}
+
+
+/* Remove a directory wrapper */
+int
+inode_rmdir(Inode *inode, DirEntry *entry)
+{
+ if (!inode->ops || !inode->ops->mkdir)
+ return -EINVAL;
+ lock(inode);
+ int err = inode->ops->rmdir(inode, entry);
+ if (!err)
+ remove(inode->dirEntries, entry);
+ unlock(inode);
+ return err;
+}
+