Nucleus
Barry Inode object 00988dd (3 years, 3 months ago)
diff --git a/vfs/inode.c b/vfs/inode.c
new file mode 100644
index 0000000..77b23ad
--- /dev/null
+++ b/vfs/inode.c
@@ -0,0 +1,45 @@
+/*
+ * This file implements the Inode object and associated inode operations. Most
+ * of the functions here are just wrappers for the file system specific inode
+ * operations. They generally check if the operation exists and use it if it
+ * does. If one does not exist, a function may implement a generic action, or
+ * just simply return. They also perform the necessary validation to ensure the
+ * operation can be called on the particular inode.
+ */
+
+#include <nucleus/object.h>
+#include <nucleus/memory.h>
+#include <nucleus/cache.h>
+#include <nucleus/vfs.h>
+
+static void inode_new(Object *);
+static void inode_delete(Object *);
+
+/* Inode object type */
+ObjectType inodeType = {
+ .size = sizeof(Inode),
+ .new = inode_new,
+ .delete = inode_delete,
+};
+
+/* Create a new Inode */
+static void
+inode_new(Object *obj)
+{
+ Inode *inode = (void *) obj;
+ inode->pages = create_list(&pageType);
+}
+
+/* Destroy an Inode */
+static void
+inode_delete(Object *obj)
+{
+ Inode *inode = (void *) obj;
+
+ /* Remove inode from the SuperBlock's list */
+// if (inode->super)
+// super_remove_inode(inode->super, inode);
+
+ /* Clean cache */
+ destroy_list(inode->pages);
+}