44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
#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 */
|