From 58b5c8ba417fe99c01d9a48731b887ce434e797e Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Fri, 27 Dec 2019 17:19:51 -0500 Subject: lots of new stuff. new memory manager, some stuff on file plumbing --- src/kernel/diskio.h | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/kernel/diskio.h (limited to 'src/kernel/diskio.h') 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 +#include + +#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 -- cgit v1.2.3