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))) + 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); -- 2.1.4 _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel