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.