1 /* efi.h - declare variables and functions for EFI support */
3 * GRUB -- GRand Unified Bootloader
4 * Copyright (C) 2006,2007,2008,2009 Free Software Foundation, Inc.
6 * GRUB is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * GRUB is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef GRUB_EFI_EFI_HEADER
21 #define GRUB_EFI_EFI_HEADER 1
23 #include <grub/types.h>
25 #include <grub/efi/api.h>
28 void *EXPORT_FUNC(grub_efi_locate_protocol
) (grub_efi_guid_t
*protocol
,
31 EXPORT_FUNC(grub_efi_locate_handle
) (grub_efi_locate_search_type_t search_type
,
32 grub_efi_guid_t
*protocol
,
34 grub_efi_uintn_t
*num_handles
);
35 void *EXPORT_FUNC(grub_efi_open_protocol
) (grub_efi_handle_t handle
,
36 grub_efi_guid_t
*protocol
,
37 grub_efi_uint32_t attributes
);
38 int EXPORT_FUNC(grub_efi_set_text_mode
) (int on
);
39 void EXPORT_FUNC(grub_efi_stall
) (grub_efi_uintn_t microseconds
);
41 EXPORT_FUNC(grub_efi_allocate_pages_real
) (grub_efi_physical_address_t address
,
42 grub_efi_uintn_t pages
,
43 grub_efi_allocate_type_t alloctype
,
44 grub_efi_memory_type_t memtype
);
46 EXPORT_FUNC(grub_efi_allocate_fixed
) (grub_efi_physical_address_t address
,
47 grub_efi_uintn_t pages
);
49 EXPORT_FUNC(grub_efi_allocate_any_pages
) (grub_efi_uintn_t pages
);
51 EXPORT_FUNC(grub_efi_allocate_pages_max
) (grub_efi_physical_address_t max
,
52 grub_efi_uintn_t pages
);
53 void EXPORT_FUNC(grub_efi_free_pages
) (grub_efi_physical_address_t address
,
54 grub_efi_uintn_t pages
);
55 grub_efi_uintn_t
EXPORT_FUNC(grub_efi_find_mmap_size
) (void);
57 EXPORT_FUNC(grub_efi_get_memory_map
) (grub_efi_uintn_t
*memory_map_size
,
58 grub_efi_memory_descriptor_t
*memory_map
,
59 grub_efi_uintn_t
*map_key
,
60 grub_efi_uintn_t
*descriptor_size
,
61 grub_efi_uint32_t
*descriptor_version
);
62 grub_efi_loaded_image_t
*EXPORT_FUNC(grub_efi_get_loaded_image
) (grub_efi_handle_t image_handle
);
63 void EXPORT_FUNC(grub_efi_print_device_path
) (grub_efi_device_path_t
*dp
);
64 char *EXPORT_FUNC(grub_efi_get_filename
) (grub_efi_device_path_t
*dp
);
65 grub_efi_device_path_t
*
66 EXPORT_FUNC(grub_efi_get_device_path
) (grub_efi_handle_t handle
);
67 grub_efi_device_path_t
*
68 EXPORT_FUNC(grub_efi_find_last_device_path
) (const grub_efi_device_path_t
*dp
);
69 grub_efi_device_path_t
*
70 EXPORT_FUNC(grub_efi_duplicate_device_path
) (const grub_efi_device_path_t
*dp
);
71 grub_err_t
EXPORT_FUNC (grub_efi_finish_boot_services
) (grub_efi_uintn_t
*outbuf_size
, void *outbuf
,
72 grub_efi_uintn_t
*map_key
,
73 grub_efi_uintn_t
*efi_desc_size
,
74 grub_efi_uint32_t
*efi_desc_version
);
75 grub_err_t
EXPORT_FUNC (grub_efi_set_virtual_address_map
) (grub_efi_uintn_t memory_map_size
,
76 grub_efi_uintn_t descriptor_size
,
77 grub_efi_uint32_t descriptor_version
,
78 grub_efi_memory_descriptor_t
*virtual_map
);
79 void *EXPORT_FUNC (grub_efi_get_variable
) (const char *variable
,
80 const grub_efi_guid_t
*guid
,
81 grub_size_t
*datasize_out
);
83 EXPORT_FUNC (grub_efi_set_variable
) (const char *var
,
84 const grub_efi_guid_t
*guid
,
86 grub_size_t datasize
);
87 grub_efi_boolean_t
EXPORT_FUNC (grub_efi_secure_boot
) (void);
89 EXPORT_FUNC (grub_efi_compare_device_paths
) (const grub_efi_device_path_t
*dp1
,
90 const grub_efi_device_path_t
*dp2
);
92 extern void (*EXPORT_VAR(grub_efi_net_config
)) (grub_efi_handle_t hnd
,
96 #if defined(__arm__) || defined(__aarch64__)
97 void *EXPORT_FUNC(grub_efi_get_firmware_fdt
)(void);
100 grub_addr_t
grub_efi_modules_addr (void);
102 void grub_efi_mm_init (void);
103 void grub_efi_mm_fini (void);
104 void grub_efi_init (void);
105 void grub_efi_fini (void);
106 void grub_efi_set_prefix (void);
109 extern grub_efi_system_table_t
*EXPORT_VAR(grub_efi_system_table
);
110 extern grub_efi_handle_t
EXPORT_VAR(grub_efi_image_handle
);
112 extern int EXPORT_VAR(grub_efi_is_finished
);
114 struct grub_net_card
;
117 grub_efinet_get_device_handle (struct grub_net_card
*card
);
119 #endif /* ! GRUB_EFI_EFI_HEADER */