Hi Heinrich,

Heinrich Schuchardt <xypron.g...@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.g...@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

Reply via email to