summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/core/include/disk.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux-4.02/core/include/disk.h')
-rw-r--r--contrib/syslinux-4.02/core/include/disk.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/core/include/disk.h b/contrib/syslinux-4.02/core/include/disk.h
new file mode 100644
index 0000000..ac23e92
--- /dev/null
+++ b/contrib/syslinux-4.02/core/include/disk.h
@@ -0,0 +1,37 @@
+#ifndef DISK_H
+#define DISK_H
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef uint64_t sector_t;
+typedef uint64_t block_t;
+
+/*
+ * struct disk: contains the information about a specific disk and also
+ * contains the I/O function.
+ */
+struct disk {
+ 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 *disk_init(uint8_t, bool, sector_t, uint16_t, uint16_t, uint32_t);
+struct device *device_init(uint8_t, bool, sector_t, uint16_t, uint16_t, uint32_t);
+
+#endif /* DISK_H */