Nucleus
Barry More VFS functions and structure d3f787c (3 years, 2 months ago)
diff --git a/include/nucleus/vfs.h b/include/nucleus/vfs.h
index 97ebf54..2ab824c 100644
--- a/include/nucleus/vfs.h
+++ b/include/nucleus/vfs.h
@@ -30,6 +30,7 @@ struct SuperBlock {
SuperOps *ops;
Inode *root;
ObjectList *inodes; /* List of cached inodes */
+ File *back;
void *data;
};
struct SuperOps {
@@ -85,6 +86,7 @@ struct FileOps {
size_t (*read)(File *, char *, size_t, off_t);
size_t (*write)(File *, char *, size_t, off_t);
int (*open)(File *);
+ int (*ioctl)(File *, unsigned long, uintptr_t);
void (*mmap)(File *, void *, size_t, off_t);
};
@@ -101,6 +103,7 @@ File *create_anonymous_file(void);
void register_fstype(const char *name, mount_callback_t mount);
int mount(const char *src, const char *target, const char *type,
unsigned long flags, void *data);
+Inode *lookup(const char *path, ObjectList *newcustody);
/* Super Block functions */
Inode *super_alloc_inode(SuperBlock *sb);
@@ -118,6 +121,7 @@ DirEntry *find_direntry(ObjectList *list, const char *name);
int file_open(File *file);
size_t file_read(File *file, char *buf, size_t count);
size_t file_write(File *file, char *buf, size_t count);
+int file_ioctl(File *file, unsigned long request, uintptr_t arpg);
void file_mmap(File *file, void *addr, size_t len, off_t offset);
/* Files namespace functions */
File *get_file_by_fd(int fd);