chiark / gitweb /
shared/capability: go frugal on space for caps
[elogind.git] / src / shared / gpt.h
1 /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3 /***
4   This file is part of systemd.
5
6   Copyright 2014 Lennart Poettering
7
8   systemd is free software; you can redistribute it and/or modify it
9   under the terms of the GNU Lesser General Public License as published by
10   the Free Software Foundation; either version 2.1 of the License, or
11   (at your option) any later version.
12
13   systemd is distributed in the hope that it will be useful, but
14   WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   Lesser General Public License for more details.
17
18   You should have received a copy of the GNU Lesser General Public License
19   along with systemd; If not, see <http://www.gnu.org/licenses/>.
20 ***/
21
22 #pragma once
23
24 #include <endian.h>
25
26 #include "sd-id128.h"
27
28 /* We only support root disk discovery for x86, x86-64 and ARM for
29  * now, since EFI for anything else doesn't really exist, and we only
30  * care for root partitions on the same disk as the EFI ESP. */
31
32 #define GPT_ROOT_X86    SD_ID128_MAKE(44,47,95,40,f2,97,41,b2,9a,f7,d1,31,d5,f0,45,8a)
33 #define GPT_ROOT_X86_64 SD_ID128_MAKE(4f,68,bc,e3,e8,cd,4d,b1,96,e7,fb,ca,f9,84,b7,09)
34 #define GPT_ROOT_ARM    SD_ID128_MAKE(69,da,d7,10,2c,e4,4e,3c,b1,6c,21,a1,d4,9a,be,d3)
35 #define GPT_ROOT_ARM_64 SD_ID128_MAKE(b9,21,b0,45,1d,f0,41,c3,af,44,4c,6f,28,0d,3f,ae)
36
37 #define GPT_ESP         SD_ID128_MAKE(c1,2a,73,28,f8,1f,11,d2,ba,4b,00,a0,c9,3e,c9,3b)
38 #define GPT_SWAP        SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)
39 #define GPT_HOME        SD_ID128_MAKE(93,3a,c7,e1,2e,b4,4f,13,b8,44,0e,14,e2,ae,f9,15)
40 #define GPT_SRV         SD_ID128_MAKE(3b,8f,84,25,20,e0,4f,3b,90,7f,1a,25,a7,6f,98,e8)
41
42 #if defined(__x86_64__)
43 #  define GPT_ROOT_NATIVE GPT_ROOT_X86_64
44 #  define GPT_ROOT_SECONDARY GPT_ROOT_X86
45 #elif defined(__i386__)
46 #  define GPT_ROOT_NATIVE GPT_ROOT_X86
47 #endif
48
49 #if defined(__aarch64__) && (__BYTE_ORDER != __BIG_ENDIAN)
50 #  define GPT_ROOT_NATIVE GPT_ROOT_ARM_64
51 #  define GPT_ROOT_SECONDARY GPT_ROOT_ARM
52 #elif defined(__arm__) && (__BYTE_ORDER != __BIG_ENDIAN)
53 #  define GPT_ROOT_NATIVE GPT_ROOT_ARM
54 #endif
55
56 /* Flags we recognize on the root, swap, home and srv partitions when
57  * doing auto-discovery. These happen to be identical to what
58  * Microsoft defines for its own Basic Data Partitions, but that's
59  * just because we saw no point in defining any other values here. */
60 #define GPT_FLAG_READ_ONLY (1ULL << 60)
61 #define GPT_FLAG_NO_AUTO (1ULL << 63)
62
63 #define GPT_LINUX_GENERIC SD_ID128_MAKE(0f,c6,3d,af,84,83,47,72,8e,79,3d,69,d8,47,7d,e4)