#ifndef DISK_H
#define DISK_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
#include <core.h>
typedef uint64_t sector_t;
typedef uint64_t block_t;
struct bios_disk_private {
com32sys_t *regs;
};
/*
* struct disk: contains the information about a specific disk and also
* contains the I/O function.
*/
struct disk {
void *private; /* Firmware-private disk info */
unsigned int disk_number; /* in BIOS style */
unsigned int sector_size; /* gener512B or 2048B */
unsigned int sector_shift;
unsigned int maxtransfer; /* Max sectors per transfer */
unsigned int h, s; /* CHS geometry */
unsigned int secpercyl; /* h*s */
unsigned int _pad;
sector_t part_start; /* the start address of this partition(in sectors) */
int (*rdwr_sectors)(struct disk *, void *, sector_t, size_t, bool);
};
extern void read_sectors(char *, sector_t, int);
extern void getoneblk(struct disk *, char *, block_t, int);
/* diskio.c */
struct disk *bios_disk_init(void *);
struct device *device_init(void *);
#endif /* DISK_H */