diff options
Diffstat (limited to 'src/kernel/drive.h')
-rw-r--r-- | src/kernel/drive.h | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/kernel/drive.h b/src/kernel/drive.h index ca6d1ee..8eb6955 100644 --- a/src/kernel/drive.h +++ b/src/kernel/drive.h @@ -1,6 +1,7 @@ #ifndef DRIVE_H #define DRIVE_H +#include <stdbool.h> #include <stdint.h> typedef uint8_t drive_file_id_t; @@ -9,20 +10,29 @@ typedef uint8_t fs_id_t; typedef uint8_t drive_id_t; #define MAX_DRIVES 256 +#define DCI_NAME_LEN 100 + +struct directory_content_info { + bool is_dir; + char name[DCI_NAME_LEN]; + uint32_t size; +}; struct drive { char *drive_type; char *fs_type; - uint8_t (*read_sectors)(const struct drive *d, uint32_t start, uint32_t count, void *buffer); + uint8_t (*read_sectors) (const struct drive *d, uint32_t start, uint32_t count, void *buffer); uint8_t (*write_sectors)(const struct drive *d, uint32_t start, uint32_t count, const void *buffer); uint32_t n_sectors; drive_id_t drive_id; - drive_file_id_t (*get_file)(const struct drive *d, const char *path); - void (*free_file)(const struct drive *d, drive_file_id_t fid); - void (*load_sector)(const struct drive *d, drive_file_id_t fid, uint32_t sector, void *at); - uint32_t (*get_free_sectors)(const struct drive *d); + drive_file_id_t (*get_file) (const struct drive *d, const char *path); + void (*free_file) (const struct drive *d, drive_file_id_t fid); + void (*load_sector) (const struct drive *d, drive_file_id_t fid, uint32_t sector, void *at); + uint32_t (*get_file_length) (const struct drive *d, drive_file_id_t fid); + uint32_t (*enumerate_dir) (const struct drive *d, const char *path, struct directory_content_info *info, uint32_t max); + uint32_t (*get_free_sectors)(const struct drive *d); fs_id_t fs_id; }; |