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