summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2021-03-22 21:23:40 +0100
committerLennart Poettering <lennart@poettering.net>2021-04-19 23:16:02 +0200
commite81acfd251eb9e6afc6cc7ee589f89e9553935f5 (patch)
tree69d742e96cb605146cff116195871b176a06f651
parentf3859d5f5591494c3022d6e9e4af1538174526fd (diff)
downloadsystemd-e81acfd251eb9e6afc6cc7ee589f89e9553935f5.tar.gz
gpt: add some simple helpers for categorizing GPT partition types
-rw-r--r--src/shared/gpt.c40
-rw-r--r--src/shared/gpt.h5
2 files changed, 45 insertions, 0 deletions
diff --git a/src/shared/gpt.c b/src/shared/gpt.c
index a96f5ee02d..5f2de0d947 100644
--- a/src/shared/gpt.c
+++ b/src/shared/gpt.c
@@ -106,3 +106,43 @@ int gpt_partition_label_valid(const char *s) {
return char16_strlen(recoded) <= 36;
}
+
+bool gpt_partition_type_is_root(sd_id128_t id) {
+ return sd_id128_equal(id, GPT_ROOT_X86) ||
+ sd_id128_equal(id, GPT_ROOT_X86_64) ||
+ sd_id128_equal(id, GPT_ROOT_ARM) ||
+ sd_id128_equal(id, GPT_ROOT_ARM_64) ||
+ sd_id128_equal(id, GPT_ROOT_IA64) ||
+ sd_id128_equal(id, GPT_ROOT_RISCV32) ||
+ sd_id128_equal(id, GPT_ROOT_RISCV64);
+}
+
+bool gpt_partition_type_is_root_verity(sd_id128_t id) {
+ return sd_id128_equal(id, GPT_ROOT_X86_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_X86_64_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_ARM_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_ARM_64_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_IA64_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_RISCV32_VERITY) ||
+ sd_id128_equal(id, GPT_ROOT_RISCV64_VERITY);
+}
+
+bool gpt_partition_type_is_usr(sd_id128_t id) {
+ return sd_id128_equal(id, GPT_USR_X86) ||
+ sd_id128_equal(id, GPT_USR_X86_64) ||
+ sd_id128_equal(id, GPT_USR_ARM) ||
+ sd_id128_equal(id, GPT_USR_ARM_64) ||
+ sd_id128_equal(id, GPT_USR_IA64) ||
+ sd_id128_equal(id, GPT_USR_RISCV32) ||
+ sd_id128_equal(id, GPT_USR_RISCV64);
+}
+
+bool gpt_partition_type_is_usr_verity(sd_id128_t id) {
+ return sd_id128_equal(id, GPT_USR_X86_VERITY) ||
+ sd_id128_equal(id, GPT_USR_X86_64_VERITY) ||
+ sd_id128_equal(id, GPT_USR_ARM_VERITY) ||
+ sd_id128_equal(id, GPT_USR_ARM_64_VERITY) ||
+ sd_id128_equal(id, GPT_USR_IA64_VERITY) ||
+ sd_id128_equal(id, GPT_USR_RISCV32_VERITY) ||
+ sd_id128_equal(id, GPT_USR_RISCV64_VERITY);
+}
diff --git a/src/shared/gpt.h b/src/shared/gpt.h
index 2e0f50c3c6..22b1d68d5f 100644
--- a/src/shared/gpt.h
+++ b/src/shared/gpt.h
@@ -128,3 +128,8 @@ typedef struct GptPartitionType {
extern const GptPartitionType gpt_partition_type_table[];
int gpt_partition_label_valid(const char *s);
+
+bool gpt_partition_type_is_root(sd_id128_t id);
+bool gpt_partition_type_is_root_verity(sd_id128_t id);
+bool gpt_partition_type_is_usr(sd_id128_t id);
+bool gpt_partition_type_is_usr_verity(sd_id128_t id);