Filesystem Layer
---
title: Filesystem Structures
---
classDiagram
class vmp_t{
block_device-t *dev_driver
vfs_fs_t *fs_driver
char name[16]
uint8_t block_buff[BLOCK_DEVICE_BLOCK_SIZE]
unsigned int mounted : 1
unsigned int read_only : 1
uint8_t subdev
union fs_data
}
class block_device_t {
bool_t active
char name[16]
uint8_t num_sub_devices
int (*init)(block_device_t *dev)
int (*finish)(void)
int (*read_block)(uint32_t block_num, uint8_t *buff, uint8_t subdev)
int (*write_block)(uint32_t block_num, uint8_t *buff, uint8_t subdev)
void *driver_data
}
class vfs_fs_t {
uint8_t type
int (*handles_path)(const char *pathname)
char *name
block_device_t *dev
vfs_t api
}
class fs_data <<union>> {
ext2_fs_t e2fs
}
block_device_t <|-- vmp_t
vfs_fs_t <|-- vmp_t
Note
This diagram is evolving as I am in the process of implementing the code for this. Anything could change, so come back often.