diff options
author | Lennart Poettering <lennart@poettering.net> | 2021-03-22 21:23:40 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2021-04-19 23:16:02 +0200 |
commit | e81acfd251eb9e6afc6cc7ee589f89e9553935f5 (patch) | |
tree | 69d742e96cb605146cff116195871b176a06f651 | |
parent | f3859d5f5591494c3022d6e9e4af1538174526fd (diff) | |
download | systemd-e81acfd251eb9e6afc6cc7ee589f89e9553935f5.tar.gz |
gpt: add some simple helpers for categorizing GPT partition types
-rw-r--r-- | src/shared/gpt.c | 40 | ||||
-rw-r--r-- | src/shared/gpt.h | 5 |
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); |