/* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "sd-gpt.h" #include "sd-id128.h" #include "architecture.h" #include "id128-util.h" /* maximum length of gpt label */ #define GPT_LABEL_MAX 36 typedef enum PartitionDesignator { PARTITION_ROOT, /* Primary architecture */ PARTITION_USR, PARTITION_HOME, PARTITION_SRV, PARTITION_ESP, PARTITION_XBOOTLDR, PARTITION_SWAP, PARTITION_ROOT_VERITY, /* verity data for the PARTITION_ROOT partition */ PARTITION_USR_VERITY, PARTITION_ROOT_VERITY_SIG, /* PKCS#7 signature for root hash for the PARTITION_ROOT partition */ PARTITION_USR_VERITY_SIG, PARTITION_TMP, PARTITION_VAR, _PARTITION_DESIGNATOR_MAX, _PARTITION_DESIGNATOR_INVALID = -EINVAL, } PartitionDesignator; bool partition_designator_is_versioned(PartitionDesignator d); PartitionDesignator partition_verity_of(PartitionDesignator p); PartitionDesignator partition_verity_sig_of(PartitionDesignator p); PartitionDesignator partition_verity_to_data(PartitionDesignator d); PartitionDesignator partition_verity_sig_to_data(PartitionDesignator d); const char* partition_designator_to_string(PartitionDesignator d) _const_; PartitionDesignator partition_designator_from_string(const char *name) _pure_; const char *gpt_partition_type_uuid_to_string(sd_id128_t id); const char *gpt_partition_type_uuid_to_string_harder( sd_id128_t id, char buffer[static SD_ID128_UUID_STRING_MAX]); #define GPT_PARTITION_TYPE_UUID_TO_STRING_HARDER(id) \ gpt_partition_type_uuid_to_string_harder((id), (char[SD_ID128_UUID_STRING_MAX]) {}) Architecture gpt_partition_type_uuid_to_arch(sd_id128_t id); typedef struct GptPartitionType { sd_id128_t uuid; const char *name; Architecture arch; PartitionDesignator designator; } GptPartitionType; extern const GptPartitionType gpt_partition_type_table[]; int gpt_partition_label_valid(const char *s); GptPartitionType gpt_partition_type_from_uuid(sd_id128_t id); int gpt_partition_type_from_string(const char *s, GptPartitionType *ret); const char *gpt_partition_type_mountpoint_nulstr(GptPartitionType type); bool gpt_partition_type_knows_read_only(GptPartitionType type); bool gpt_partition_type_knows_growfs(GptPartitionType type); bool gpt_partition_type_knows_no_auto(GptPartitionType type);