78e1a10
From bdc07d05d0eeb39f0c90e7f8f6850016ebc4bf6b Mon Sep 17 00:00:00 2001
6f1e3d5
From: Peter Jones <pjones@redhat.com>
6f1e3d5
Date: Thu, 1 Jun 2017 09:59:56 -0400
0bcec26
Subject: [PATCH 183/227] Add grub_efi_allocate_pool() and grub_efi_free_pool()
6f1e3d5
 wrappers.
6f1e3d5
6f1e3d5
Signed-off-by: Peter Jones <pjones@redhat.com>
6f1e3d5
---
6f1e3d5
 include/grub/efi/efi.h | 36 ++++++++++++++++++++++++++++++++----
6f1e3d5
 1 file changed, 32 insertions(+), 4 deletions(-)
6f1e3d5
6f1e3d5
diff --git a/include/grub/efi/efi.h b/include/grub/efi/efi.h
ec4acbb
index 91e29ce66f1..68326d96f5a 100644
6f1e3d5
--- a/include/grub/efi/efi.h
6f1e3d5
+++ b/include/grub/efi/efi.h
6f1e3d5
@@ -24,6 +24,10 @@
6f1e3d5
 #include <grub/dl.h>
6f1e3d5
 #include <grub/efi/api.h>
6f1e3d5
 
6f1e3d5
+/* Variables.  */
6f1e3d5
+extern grub_efi_system_table_t *EXPORT_VAR(grub_efi_system_table);
6f1e3d5
+extern grub_efi_handle_t EXPORT_VAR(grub_efi_image_handle);
6f1e3d5
+
6f1e3d5
 /* Functions.  */
6f1e3d5
 void *EXPORT_FUNC(grub_efi_locate_protocol) (grub_efi_guid_t *protocol,
6f1e3d5
 					     void *registration);
6f1e3d5
@@ -58,6 +62,33 @@ EXPORT_FUNC(grub_efi_get_memory_map) (grub_efi_uintn_t *memory_map_size,
6f1e3d5
 				      grub_efi_uintn_t *map_key,
6f1e3d5
 				      grub_efi_uintn_t *descriptor_size,
6f1e3d5
 				      grub_efi_uint32_t *descriptor_version);
6f1e3d5
+
6f1e3d5
+static inline grub_efi_status_t
6f1e3d5
+__attribute__((__unused__))
6f1e3d5
+grub_efi_allocate_pool (grub_efi_memory_type_t pool_type,
6f1e3d5
+			grub_efi_uintn_t buffer_size,
6f1e3d5
+			void **buffer)
6f1e3d5
+{
6f1e3d5
+  grub_efi_boot_services_t *b;
6f1e3d5
+  grub_efi_status_t status;
6f1e3d5
+
6f1e3d5
+  b = grub_efi_system_table->boot_services;
6f1e3d5
+  status = efi_call_3 (b->allocate_pool, pool_type, buffer_size, buffer);
6f1e3d5
+  return status;
6f1e3d5
+}
6f1e3d5
+
6f1e3d5
+static inline grub_efi_status_t
6f1e3d5
+__attribute__((__unused__))
6f1e3d5
+grub_efi_free_pool (void *buffer)
6f1e3d5
+{
6f1e3d5
+  grub_efi_boot_services_t *b;
6f1e3d5
+  grub_efi_status_t status;
6f1e3d5
+
6f1e3d5
+  b = grub_efi_system_table->boot_services;
6f1e3d5
+  status = efi_call_1 (b->free_pool, buffer);
6f1e3d5
+  return status;
6f1e3d5
+}
6f1e3d5
+
6f1e3d5
 grub_efi_loaded_image_t *EXPORT_FUNC(grub_efi_get_loaded_image) (grub_efi_handle_t image_handle);
6f1e3d5
 void EXPORT_FUNC(grub_efi_print_device_path) (grub_efi_device_path_t *dp);
6f1e3d5
 char *EXPORT_FUNC(grub_efi_get_filename) (grub_efi_device_path_t *dp);
6f1e3d5
@@ -103,10 +134,7 @@ void grub_efi_init (void);
6f1e3d5
 void grub_efi_fini (void);
6f1e3d5
 void grub_efi_set_prefix (void);
6f1e3d5
 
6f1e3d5
-/* Variables.  */
6f1e3d5
-extern grub_efi_system_table_t *EXPORT_VAR(grub_efi_system_table);
6f1e3d5
-extern grub_efi_handle_t EXPORT_VAR(grub_efi_image_handle);
6f1e3d5
-
6f1e3d5
+/* More variables.  */
6f1e3d5
 extern int EXPORT_VAR(grub_efi_is_finished);
6f1e3d5
 
6f1e3d5
 struct grub_net_card;
6f1e3d5
-- 
ec4acbb
2.15.0
6f1e3d5