1 #ifndef BIOS_DISKS_H 2 #define BIOS_DISKS_H 3 4 #include "dev.h" 5 6 /* 7 * Constants 8 * 9 */ 10 11 #define BIOS_DISK_MAX_NAME_LEN 6 12 13 struct bios_disk_sector { 14 char data[512]; 15 }; 16 17 /* 18 * The location of a BIOS disk 19 * 20 */ 21 struct bios_disk_loc { 22 uint8_t drive; 23 }; 24 25 /* 26 * A physical BIOS disk device 27 * 28 */ 29 struct bios_disk_device { 30 char name[BIOS_DISK_MAX_NAME_LEN]; 31 uint8_t drive; 32 uint8_t type; 33 }; 34 35 /* 36 * A BIOS disk driver, with a valid device ID range and naming 37 * function. 38 * 39 */ 40 struct bios_disk_driver { 41 void ( *fill_drive_name ) ( char *buf, uint8_t drive ); 42 uint8_t min_drive; 43 uint8_t max_drive; 44 }; 45 46 /* 47 * Define a BIOS disk driver 48 * 49 */ 50 #define BIOS_DISK_DRIVER( _name, _fill_drive_name, _min_drive, _max_drive ) \ 51 static struct bios_disk_driver _name = { \ 52 .fill_drive_name = _fill_drive_name, \ 53 .min_drive = _min_drive, \ 54 .max_drive = _max_drive, \ 55 } 56 57 /* 58 * Functions in bios_disks.c 59 * 60 */ 61 62 63 /* 64 * bios_disk bus global definition 65 * 66 */ 67 extern struct bus_driver bios_disk_driver; 68 69 #endif /* BIOS_DISKS_H */ 70