Minor fixes to comments.
[AROS.git] / rom / partition / partition_types.c
blob32400f0e582a64c14c40828a0faaabf59898fdb6
1 #include <libraries/iffparse.h>
2 #include <libraries/uuid.h>
4 #include "partition_types.h"
6 /*
7 * TODO: This should not be a hardcoded mapping, instead it should be loaded
8 * from some file, like DEVS:partition-types.
9 */
11 static const uuid_t GPT_Type_EFISystem = MAKE_UUID(0xC12A7328, 0xF81F, 0x11D2, 0xBA4B, 0x00A0C93EC93BULL);
12 static const uuid_t GPT_Type_HFSPlus = MAKE_UUID(0x48465300, 0x0000, 0x11AA, 0xAA11, 0x00306543ECACULL);
13 static const uuid_t GPT_Type_FreeBSD_Boot = MAKE_UUID(0x83BD6B9D, 0x7F41, 0x11DC, 0xBE0B, 0x001560B84F0FULL);
14 static const uuid_t GPT_Type_FreeBSD_Data = MAKE_UUID(0x516E7CB4, 0x6ECF, 0x11D6, 0x8FF8, 0x00022D09712BULL);
15 static const uuid_t GPT_Type_NetBSD_FFS = MAKE_UUID(0x49F48D5A, 0xB10E, 0x11DC, 0xB99B, 0x0019D1879648ULL);
17 const struct TypeMapping PartTypes[] =
19 { 0x01, MAKE_ID('F','A','T','\0'), NULL }, /* DOS 12-bit FAT */
20 { 0x04, MAKE_ID('F','A','T','\0'), NULL }, /* DOS 16-bit FAT (up to 32M) */
21 { 0x06, MAKE_ID('F','A','T','\0'), NULL }, /* DOS 16-bit FAT (over 32M) */
22 { 0x07, MAKE_ID('N','T','F','S') , NULL }, /* Windows NT NTFS */
23 { 0x0b, MAKE_ID('F','A','T','\0'), NULL }, /* W95 FAT32 */
24 { 0x0c, MAKE_ID('F','A','T','\0'), &GPT_Type_EFISystem }, /* W95 LBA FAT32 */
25 { 0x0e, MAKE_ID('F','A','T','\0'), NULL }, /* W95 16-bit LBA FAT */
26 { 0x2c, MAKE_ID('D','O','S','\0'), NULL }, /* AOS OFS */
27 { 0x2d, MAKE_ID('D','O','S','\1'), NULL }, /* AOS FFS */
28 { 0x2e, MAKE_ID('D','O','S','\3'), NULL }, /* AOS FFS-I */
29 { 0x2f, MAKE_ID('S','F','S','\0'), NULL }, /* AOS SFS */
30 { 0x80, MAKE_ID('M','N','X','\0'), NULL }, /* MINIX until 1.4a */
31 { 0x81, MAKE_ID('M','N','X','\1'), NULL }, /* MINIX since 1.4b */
32 { 0x83, MAKE_ID('E','X','T','\2'), NULL }, /* linux native partition */
33 { 0x8e, MAKE_ID('L','V','M','\0'), NULL }, /* linux LVM partition */
34 { 0x9f, MAKE_ID('B','S','D','\0'), NULL }, /* BSD/OS */
35 { 0xa5, MAKE_ID('B','S','D','\1'), &GPT_Type_FreeBSD_Boot}, /* FreeBSD */
36 { 0xa5, MAKE_ID('B','S','D','\1'), &GPT_Type_FreeBSD_Data},
37 { 0xa5, MAKE_ID('B','S','D','\1'), &GPT_Type_NetBSD_FFS }, /* NetBSD */
38 { 0xa6, MAKE_ID('B','S','D','\2'), NULL }, /* OpenBSD */
39 { 0xaf, MAKE_ID('H','F','S','+' ), &GPT_Type_HFSPlus },
40 { 0xdb, MAKE_ID('C','P','M','\2'), NULL }, /* CPM/M */
41 { 0xeb, MAKE_ID('B','E','F','S' ), NULL }, /* BeOS FS */
42 { 0xec, MAKE_ID('S','K','Y','\0'), NULL }, /* SkyOS FS */
43 { 0xfd, MAKE_ID('R','A','I','D' ), NULL }, /* linux RAID with autodetect */
44 { 0, 0, NULL }
47 ULONG MBR_FindDosType(UBYTE id)
49 const struct TypeMapping *m;
51 for (m = PartTypes; m->DOSType; m++)
53 if (m->MBRType == id)
54 return m->DOSType;
57 return 0;