Page:
New VFS
Pages
1.0 release announcement draft
1.1 TODO
2.0 TODO
2.0 release announcement draft
Contribution Guidelines
FAQs
Features
Home
How to Python
Loadable Kernel Modules ELF Relocatable Objects
Media
Modules
New Release Template
New VFS
Old Screenshots
Ports
Screenshots
ToaruOS NIH
Todo
What Happens When
Wish List
Yutani Future
1
New VFS
Kevin Lange edited this page 2014-05-06 23:55:01 -07:00
New VFS Design Documentation
For reference: virtual functions in the old VFS
typedef uint32_t (*read_type_t) (struct fs_node *, uint32_t, uint32_t, uint8_t *);
typedef uint32_t (*write_type_t) (struct fs_node *, uint32_t, uint32_t, uint8_t *);
typedef void (*open_type_t) (struct fs_node *, unsigned int flags);
typedef void (*close_type_t) (struct fs_node *);
typedef struct dirent *(*readdir_type_t) (struct fs_node *, uint32_t);
typedef struct fs_node *(*finddir_type_t) (struct fs_node *, char *name);
typedef void (*create_type_t) (struct fs_node *, char *name, uint16_t permission);
typedef void (*unlink_type_t) (struct fs_node *, char *name);
typedef void (*mkdir_type_t) (struct fs_node *, char *name, uint16_t permission);
typedef int (*ioctl_type_t) (struct fs_node *, int request, void * argp);
typedef int (*get_size_type_t) (struct fs_node *);
typedef int (*chmod_type_t) (struct fs_node *, int mode);
Design Goals of the New VFS
-
Large file support from the beginning
All 64-bit offsets and sizes.
-
Cached virtual file objects
We currently have "objects that happen to exist from a malloc" and "objects we created from an open() call"...
-
Reference counting so we can actually close files
Specifically, so we can close everything on exit.
-
Unix pipes
The focus of this rewrite is supporting closing of pipes...
-
Permissions
The current VFS can... uh... store them, but doesn't actually respect them.
-
Support for symbolic links
Yeah.
-
Ground-up support for polling / file events.
Sleep on multiple, etc.