aboutsummaryrefslogtreecommitdiff
path: root/src/kernel/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/include')
-rw-r--r--src/kernel/include/nullfs.h20
-rw-r--r--src/kernel/include/vfs.h5
2 files changed, 10 insertions, 15 deletions
diff --git a/src/kernel/include/nullfs.h b/src/kernel/include/nullfs.h
index 43bad5e..ba6a9c8 100644
--- a/src/kernel/include/nullfs.h
+++ b/src/kernel/include/nullfs.h
@@ -2,26 +2,18 @@
#include <vfs.h>
-#define NULLFS_OPT_CREATE_EN 1
-#define NULLFS_OPT_DELETE_EN 2
+// The nullfs accepts several flags at its creation :
+// - c : allow creation of files as ram files
+// - d : allow deletion of arbitrary nodes
+// - m : allow move operation
typedef struct nullfs nullfs_t;
-typedef struct {
- void* (*open)(void* f, int mode, fs_handle_t *h);
- size_t (*read)(void* fd, size_t offset, size_t len, char* buf);
- size_t (*write)(void* fd, size_t offset, size_t len, const char* buf);
- bool (*stat)(void* f, stat_t *st);
- int (*ioctl)(void* f, int command, void* data);
- void (*close)(void* fd);
- void (*dispose)(void* f);
-} nullfs_node_ops_t;
-
void register_nullfs_driver();
nullfs_t* as_nullfs(fs_t *fs);
-bool nullfs_add(nullfs_t *f, const char* name, void* data, nullfs_node_ops_t* ops);
-bool nullfs_add_ram_file(nullfs_t *f, const char* name, void* data, size_t init_sz, bool copy, int ok_modes);
+bool nullfs_add_node(nullfs_t *f, const char* name, fs_node_ptr data, fs_node_ops_t *ops);
+bool nullfs_add_ram_file(nullfs_t *f, const char* name, char* data, size_t init_sz, bool copy, int ok_modes);
/* vim: set ts=4 sw=4 tw=0 noet :*/
diff --git a/src/kernel/include/vfs.h b/src/kernel/include/vfs.h
index ccb33f4..b0fd146 100644
--- a/src/kernel/include/vfs.h
+++ b/src/kernel/include/vfs.h
@@ -31,6 +31,7 @@ typedef struct {
size_t (*read)(fs_handle_ptr f, size_t offset, size_t len, char* buf);
size_t (*write)(fs_handle_ptr f, size_t offset, size_t len, const char* buf);
bool (*stat)(fs_handle_ptr f, stat_t *st);
+ bool (*readdir)(fs_handle_ptr f, dirent_t *d);
void (*close)(fs_handle_ptr f);
} fs_handle_ops_t;
@@ -138,8 +139,10 @@ int fs_ioctl(fs_t *fs, const char* file, int command, void* data);
fs_handle_t* fs_open(fs_t *fs, const char* file, int mode);
void ref_file(fs_handle_t *file);
void unref_file(fs_handle_t *file);
+int file_get_mode(fs_handle_t *f);
size_t file_read(fs_handle_t *f, size_t offset, size_t len, char* buf);
size_t file_write(fs_handle_t *f, size_t offset, size_t len, const char* buf);
-int file_get_mode(fs_handle_t *f);
+bool file_stat(fs_handle_t *f, stat_t *st);
+bool file_readdir(fs_handle_t *f, dirent_t *d);
/* vim: set ts=4 sw=4 tw=0 noet :*/