
Hi Heinrich,
Heinrich Schuchardt xypron.glpk@gmx.de writes:
Up to now for MBR and GPT partitions the info field 'bootable' was set to 1 if either the partition was an EFI system partition or the bootable flag was set.
Turn info field 'bootable' into a bit mask with separate bits for bootable and EFI system partition.
This will allow us to identify the EFI system partition in the UEFI sub-system.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
disk/part_dos.c | 10 ++++++++-- disk/part_efi.c | 12 ++++++++---- include/part.h | 11 ++++++++++- 3 files changed, 26 insertions(+), 7 deletions(-)
[...]
diff --git a/include/part.h b/include/part.h index 0b5cf3d5e8..a63d1d0cda 100644 --- a/include/part.h +++ b/include/part.h @@ -51,13 +51,22 @@ struct block_drvr { #define PART_TYPE_LEN 32 #define MAX_SEARCH_PARTITIONS 64
+#define PART_BOOTABLE 1 +#define PART_EFI_SYSTEM_PARTITION 2
As these defines are used as flags, it be better to use the BIT() macro to make it explicit that these are bit positions rather than sequential values.
Thanks, Punit
typedef struct disk_partition { lbaint_t start; /* # of first block in partition */ lbaint_t size; /* number of blocks in partition */ ulong blksz; /* block size in bytes */ uchar name[PART_NAME_LEN]; /* partition name */ uchar type[PART_TYPE_LEN]; /* string type description */
- int bootable; /* Active/Bootable flag is set */
- /*
* The bootable is a bitmask with the following fields:
*
* PART_BOOTABLE the MBR bootable flag is set
* PART_EFI_SYSTEM_PARTITION the partition is an EFI system partition
*/
- int bootable;
#if CONFIG_IS_ENABLED(PARTITION_UUIDS) char uuid[UUID_STR_LEN + 1]; /* filesystem UUID as string, if exists */
#endif
2.20.1