From 243e28075e223bd9be145251161b692873918764 Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Sun, 5 Jan 2020 22:26:40 -0500 Subject: function to return pointers to functions to read from a constant interface, so we only have to check the interface once per macro operation --- src/kernel/diskio.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/kernel/diskio.h') diff --git a/src/kernel/diskio.h b/src/kernel/diskio.h index 2f83864..0e16423 100644 --- a/src/kernel/diskio.h +++ b/src/kernel/diskio.h @@ -29,6 +29,11 @@ enum interface { ATA }; +#define N_INTERFACES 3 + +typedef uint32_t (*const read_sectors_t)(uint8_t, uint32_t, uint32_t, void *); +typedef uint32_t (*const write_sectors_t)(uint8_t, uint32_t, uint32_t, void *); + enum drive_flags { SPUN = 0x01, DISK_IN = 0x02, @@ -45,8 +50,8 @@ struct drive_info { struct drive_info drives[26]; -uint32_t read_sectors(uint8_t drive, uint32_t start, uint32_t count, void *buffer); -uint32_t write_sectors(uint8_t drive, uint32_t start, uint32_t count, void *buffer); +read_sectors_t get_read_sectors_function(uint8_t drive); +write_sectors_t get_write_sectors_function(uint8_t drive); void update_status(uint8_t drive); #endif \ No newline at end of file -- cgit v1.2.3