diff --git a/src/kernel/vfs.c b/src/kernel/vfs.c
new file mode 100644
index 0000000..59ccaf5
--- /dev/null
+++ b/src/kernel/vfs.c
@@ -0,0 +1,49 @@
+#include "vfs.h"
+
+uint fs_read(struct fs_node *node, size_t offset, size_t size, uchar *buffer)
+{
+	if (!node || !node->vtable || !node->vtable->read)
+		return 0;
+
+	return node->vtable->read(node, offset, size, buffer);
+}
+
+uint fs_write(struct fs_node *node, size_t offset, size_t size, uchar *buffer)
+{
+	if (!node || !node->vtable || !node->vtable->write)
+		return 0;
+
+	return node->vtable->write(node, offset, size, buffer);
+}
+
+void fs_open(struct fs_node *node)
+{
+	if (!node || !node->vtable || !node->vtable->open)
+		return;
+
+	node->vtable->open(node);
+}
+
+void fs_close(struct fs_node *node)
+{
+	if (!node || !node->vtable || !node->vtable->close)
+		return;
+
+	node->vtable->close(node);
+}
+
+struct fs_dirent *fs_readdir(struct fs_node *node, uint index)
+{
+	if (!node || !node->vtable || !node->vtable->readdir || (node->flags & 7) != FS_DIRECTORY)
+		return NULL;
+
+	return node->vtable->readdir(node, index);
+}
+
+struct fs_node *fs_finddir(struct fs_node *node, char *name)
+{
+	if (!node || !node->vtable || !node->vtable->finddir || (node->flags & 7) != FS_DIRECTORY)
+		return NULL;
+
+	return node->vtable->finddir(node, name);
+}
