xref: /haiku/src/add-ons/kernel/partitioning_systems/gpt/gpt_known_guids.h (revision 2b76973fa2401f7a5edf68e6470f3d3210cbcff3)
1 /*
2  * Copyright 2009, Michael Lotz, mmlr@mlotz.ch. All rights reserved.
3  * Copyright 2007-2013, Axel Dörfler, axeld@pinc-software.de.
4  *
5  * Distributed under the terms of the MIT License.
6  */
7 #ifndef GPT_KNOWN_GUIDS_H
8 #define GPT_KNOWN_GUIDS_H
9 
10 
11 #include <ByteOrder.h>
12 
13 #include <disk_device_types.h>
14 
15 
16 struct guid;
17 
18 
19 struct static_guid {
20 	uint32	data1;
21 	uint16	data2;
22 	uint16	data3;
23 	uint64	data4;
24 
25 	inline bool operator==(const guid& other) const;
26 	inline operator guid_t() const;
27 } _PACKED;
28 
29 
30 inline bool
31 static_guid::operator==(const guid_t& other) const
32 {
33 	return B_HOST_TO_LENDIAN_INT32(data1) == other.data1
34 		&& B_HOST_TO_LENDIAN_INT16(data2) == other.data2
35 		&& B_HOST_TO_LENDIAN_INT16(data3) == other.data3
36 		&& B_HOST_TO_BENDIAN_INT64(*(uint64*)&data4) == *(uint64*)other.data4;
37 			// the last 8 bytes are in big-endian order
38 }
39 
40 
41 inline
42 static_guid::operator guid_t() const
43 {
44 	guid_t guid;
45 	guid.data1 = B_HOST_TO_LENDIAN_INT32(data1);
46 	guid.data2 = B_HOST_TO_LENDIAN_INT16(data2);
47 	guid.data3 = B_HOST_TO_LENDIAN_INT16(data3);
48 	uint64 last = B_HOST_TO_BENDIAN_INT64(*(uint64*)&data4);
49 	memcpy(guid.data4, &last, sizeof(uint64));
50 
51 	return guid;
52 }
53 
54 
55 const static struct type_map {
56 	static_guid	guid;
57 	const char*	type;
58 } kTypeMap[] = {
59 	{{0xC12A7328, 0xF81F, 0x11D2, 0xBA4B00A0C93EC93BLL}, "EFI System Data"},
60 	{{0x21686148, 0x6449, 0x6E6F, 0x744E656564454649LL}, "BIOS Boot Data"},
61 	{{0x024DEE41, 0x33E7, 0x11D3, 0x9D690008C781F39FLL}, "MBR Partition Nest"},
62 	{{0x42465331, 0x3BA3, 0x10F1, 0x802A4861696B7521LL}, BFS_NAME},
63 	{{0x0FC63DAF, 0x8483, 0x4772, 0x8E793D69D8477DE4LL}, "Linux File System"},
64 	{{0xA19D880F, 0x05FC, 0x4D3B, 0xA006743F0F84911ELL}, "Linux RAID"},
65 	{{0x0657FD6D, 0xA4AB, 0x43C4, 0x84E50933C84B4F4FLL}, "Linux Swap"},
66 	{{0xE6D6D379, 0xF507, 0x44C2, 0xA23C238F2A3DF928LL}, "Linux LVM"},
67 	{{0xEBD0A0A2, 0xB9E5, 0x4433, 0x87C068B6B72699C7LL}, "Windows Data"},
68 	{{0x48465300, 0x0000, 0x11AA, 0xAA1100306543ECACLL}, "HFS+ File System"},
69 	{{0x55465300, 0x0000, 0x11AA, 0xAA1100306543ECACLL}, "UFS File System"},
70 	{{0x52414944, 0x0000, 0x11AA, 0xAA1100306543ECACLL}, "Apple RAID"},
71 	{{0x52414944, 0x5F4F, 0x11AA, 0xAA1100306543ECACLL}, "Apple RAID, offline"}
72 };
73 
74 
75 #endif	// GPT_KNOWN_GUIDS_H
76