diff options
author | Benji Dial <benji6283@gmail.com> | 2020-09-06 00:48:07 -0400 |
---|---|---|
committer | Benji Dial <benji6283@gmail.com> | 2020-09-06 00:48:07 -0400 |
commit | e8c6577617bffa4402c07c7aa20e3c24f03c1c20 (patch) | |
tree | 2fb9230b62d2344a44453117de9e656892219788 /src/kernel/drive.h | |
parent | 7ff724fe8f709440da9c730fdb8dcbaa4f989ed5 (diff) | |
download | portland-os-e8c6577617bffa4402c07c7aa20e3c24f03c1c20.tar.gz |
program loading, others
big kernel additions: paging, elf loading, separate kernel and user page allocation
it now properly loads and runs sd0:bin/init.elf
still need to determine which disk was booted from, and start the init on that disk
Diffstat (limited to 'src/kernel/drive.h')
-rw-r--r-- | src/kernel/drive.h | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/kernel/drive.h b/src/kernel/drive.h index 8eb6955..b02b4ad 100644 --- a/src/kernel/drive.h +++ b/src/kernel/drive.h @@ -4,7 +4,7 @@ #include <stdbool.h> #include <stdint.h> -typedef uint8_t drive_file_id_t; +typedef uint8_t file_id_t; typedef uint8_t fs_id_t; typedef uint8_t drive_id_t; @@ -22,23 +22,26 @@ 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 (*write_sectors)(const struct drive *d, uint32_t start, uint32_t count, const void *buffer); + uint32_t (*read_sectors) (const struct drive *d, uint32_t start, uint32_t count, void *buffer); + uint32_t (*write_sectors)(const struct drive *d, uint32_t start, uint32_t count, const void *buffer); + void (*ready) (const struct drive *d); + void (*done) (const struct drive *d); 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_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); + file_id_t (*get_file) (const struct drive *d, const char *path); + void (*free_file) (const struct drive *d, file_id_t fid); + void (*load_sector) (const struct drive *d, file_id_t fid, uint32_t sector, void *at); + uint32_t (*get_file_length) (const struct drive *d, 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; }; extern uint8_t n_drives; extern struct drive drives[MAX_DRIVES]; +void init_drives(); void commit_drive(struct drive data); #endif
\ No newline at end of file |