1#ifndef DISK_H
2#define DISK_H
3
4#include <stddef.h>
5#include <stdint.h>
6#include <stdbool.h>
7
8typedef uint64_t sector_t;
9typedef uint64_t block_t;
10
11
12
13
14
15struct disk {
16 unsigned int disk_number;
17 unsigned int sector_size;
18 unsigned int sector_shift;
19 unsigned int maxtransfer;
20
21 unsigned int h, s;
22 unsigned int secpercyl;
23 unsigned int _pad;
24
25 sector_t part_start;
26
27 int (*rdwr_sectors)(struct disk *, void *, sector_t, size_t, bool);
28};
29
30extern void read_sectors(char *, sector_t, int);
31extern void getoneblk(struct disk *, char *, block_t, int);
32
33
34struct disk *disk_init(uint8_t, bool, sector_t, uint16_t, uint16_t, uint32_t);
35struct device *device_init(uint8_t, bool, sector_t, uint16_t, uint16_t, uint32_t);
36
37#endif
38