aboutsummaryrefslogtreecommitdiff
path: root/inc/mbr.h
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2026-09-29 23:40:31 +0200
committerJavier <dev.git@javispedro.com>2026-09-29 23:40:31 +0200
commit0a656a4a84f920194958d339d61ed567eba9c03c (patch)
tree0feecbddf0150e02fe7a2fa619dc232c50ced4c8 /inc/mbr.h
downloadchu-0a656a4a84f920194958d339d61ed567eba9c03c.tar.gz
chu-0a656a4a84f920194958d339d61ed567eba9c03c.zip
initial import
Diffstat (limited to 'inc/mbr.h')
-rw-r--r--inc/mbr.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/inc/mbr.h b/inc/mbr.h
new file mode 100644
index 0000000..d45727d
--- /dev/null
+++ b/inc/mbr.h
@@ -0,0 +1,46 @@
+#ifndef MBR_H
+#define MBR_H
+
+#include "sassert.h"
+
+enum MBR_PARTTYPE
+{
+ MBR_EMPTY = 0,
+ MBR_FAT12 = 0x01,
+ MBR_FAT16_32MB = 0x04,
+ MBR_EXT = 0x05,
+ MBR_FAT16 = 0x06,
+ MBR_IFS = 0x07,
+ MBR_FAT32 = 0x0B,
+ MBR_FAT32_LBA = 0x0C,
+ MBR_FAT16_LBA = 0x0E,
+ MBR_EXT_LBA = 0x0F,
+ MBR_LINUX_SWAP = 0x82,
+ MBR_LINUX = 0x83,
+};
+
+typedef _Packed struct MBR_CHS
+{
+ uint8_t head;
+ unsigned sector : 6;
+ unsigned cyl : 10;
+} MBR_CHS;
+
+STATIC_ASSERT(sizeof(MBR_CHS) == 3);
+
+typedef _Packed struct MBR_PARTENTRY
+{
+ uint8_t status;
+ MBR_CHS chsFirst;
+ uint8_t type;
+ MBR_CHS chsLast;
+ uint32_t lbaFirst;
+ uint32_t lbaLen;
+} MBR_PARTENTRY;
+
+STATIC_ASSERT(sizeof(MBR_PARTENTRY) == 16);
+
+#define MBR_PARTENTRY_OFFSET_ON_DISK 446
+#define MBR_SIGNATURE_OFFSET_ON_DISK 510
+
+#endif // MBR_H