diff options
author | Benji Dial <Benji3.141@gmail.com> | 2019-12-27 17:19:51 -0500 |
---|---|---|
committer | Benji Dial <Benji3.141@gmail.com> | 2019-12-27 17:19:51 -0500 |
commit | 58b5c8ba417fe99c01d9a48731b887ce434e797e (patch) | |
tree | a09f7d0a6543328d70f8c02be8a37c320be5ef71 /src/kernel/diskio.h | |
parent | 3f3f9a806dc63ad827fe28724dabe694f6e67f1e (diff) | |
download | portland-os-58b5c8ba417fe99c01d9a48731b887ce434e797e.tar.gz |
lots of new stuff. new memory manager, some stuff on file plumbing
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 |