From 7ff724fe8f709440da9c730fdb8dcbaa4f989ed5 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Thu, 13 Aug 2020 23:59:14 -0400 Subject: FAT16 directory enumeration, making many functions static, new 'log' functions to wrap vga and serial --- src/kernel/drive.h | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src/kernel/drive.h') 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 #include 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; }; -- cgit v1.2.3