grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC 1/3] efi: add configuration table search function


From: Vladimir 'phcoder' Serbinenko
Subject: Re: [RFC 1/3] efi: add configuration table search function
Date: Tue, 01 Mar 2016 20:13:50 +0000



Le mar. 1 mars 2016 21:09, Andrei Borzenkov <address@hidden> a écrit :
01.03.2016 20:41, Leif Lindholm пишет:
> Several places in the code iterates through the configuration tables
> presented by the system table.
> Add new function grub_efi_find_config_table to use for this instead.
> ---
>  grub-core/kern/efi/efi.c | 18 ++++++++++++++++++
>  include/grub/efi/efi.h   |  3 +++
>  2 files changed, 21 insertions(+)
>
> diff --git a/grub-core/kern/efi/efi.c b/grub-core/kern/efi/efi.c
> index caf9bcc..41686ee 100644
> --- a/grub-core/kern/efi/efi.c
> +++ b/grub-core/kern/efi/efi.c
> @@ -911,3 +911,21 @@ grub_efi_compare_device_paths (const grub_efi_device_path_t *dp1,
>
>    return 0;
>  }
> +
> +/* Return pointer to vendor table identified by guid. */
> +void *
> +grub_efi_find_config_table (const grub_efi_guid_t *guid)
> +{
> +  grub_efi_uintn_t i;
> +
> +  for (i = 0; i < grub_efi_system_table->num_table_entries; i++)
> +    {
> +      grub_efi_configuration_table_t *table =
> +     &grub_efi_system_table->configuration_table[i];
> +
> +      if (! grub_memcmp (&table->vendor_guid, guid,
> +                      sizeof (grub_efi_packed_guid_t)))

Either both types are exactly the same and one should be dropped or this
cannot be right. In view of recent discussion about structure member
alignments I am not sure why grub_efi_packed_guid_t is needed and the
code already was inconsistent in usage.
Types differ only in alignment, not in internal structure. We can guarantee alignment of structure that we allocated but not of some EFI pointer



> +     return (void *) table->vendor_table;
> +    }
> +  return NULL;
> +}
> diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
> index 0e6fd86..65c7f95 100644
> --- a/include/grub/efi/efi.h
> +++ b/include/grub/efi/efi.h
> @@ -77,6 +77,9 @@ int
>  EXPORT_FUNC (grub_efi_compare_device_paths) (const grub_efi_device_path_t *dp1,
>                                            const grub_efi_device_path_t *dp2);
>
> +void *
> +EXPORT_FUNC (grub_efi_find_config_table) (const grub_efi_guid_t *guid);
> +
>  extern void (*EXPORT_VAR(grub_efi_net_config)) (grub_efi_handle_t hnd,
>                                               char **device,
>                                               char **path);
>


_______________________________________________
Grub-devel mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/grub-devel

reply via email to

[Prev in Thread] Current Thread [Next in Thread]