diff options
Diffstat (limited to 'src/kernel/diskio.h')
-rw-r--r-- | src/kernel/diskio.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/kernel/diskio.h b/src/kernel/diskio.h new file mode 100644 index 0000000..2f83864 --- /dev/null +++ b/src/kernel/diskio.h @@ -0,0 +1,52 @@ +/* +Copyright 2019 Benji Dial + +Permission to use, copy, modify, and/or distribute this +software for any purpose with or without fee is hereby +granted, provided that the above copyright notice and this +permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS +ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER +RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. +*/ + +#include <stdint.h> +#include <stdbool.h> + +#ifndef DISKIO_H +#define DISKIO_H + +enum interface { + FLOPPY, + IDE, + ATA +}; + +enum drive_flags { + SPUN = 0x01, + DISK_IN = 0x02, + PRESENT = 0x04 +}; + +struct drive_info { + uint8_t interface; + uint8_t number; + uint8_t flags; + uint8_t ssize;//log_2 of B + uint32_t length;//in kiB/2 +}; + +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); +void update_status(uint8_t drive); + +#endif
\ No newline at end of file |