34 #define EFIAPI __attribute__((ms_abi)) 39 #define EFIAPI __attribute__((cdecl,regparm(0))) 52 #define EFI_HANDLE STUPID_EFI_HANDLE 53 #define EFI_EVENT STUPID_EFI_EVENT 55 #define _Static_assert(expr, msg) 97 #define EFI_PROTOCOLS __table ( struct efi_protocol, "efi_protocols" ) 100 #define __efi_protocol __table_entry ( EFI_PROTOCOLS, 01 ) 107 #define EFI_REQUIRE_PROTOCOL( _protocol, _ptr ) \ 108 struct efi_protocol __ ## _protocol __efi_protocol = { \ 109 .guid = _protocol ## _GUID, \ 110 .protocol = ( ( void ** ) ( void * ) \ 111 ( ( (_ptr) == ( ( _protocol ** ) (_ptr) ) ) ? \ 112 (_ptr) : (_ptr) ) ), \ 121 #define EFI_REQUEST_PROTOCOL( _protocol, _ptr ) \ 122 struct efi_protocol __ ## _protocol __efi_protocol = { \ 123 .guid = _protocol ## _GUID, \ 124 .protocol = ( ( void ** ) ( void * ) \ 125 ( ( (_ptr) == ( ( _protocol ** ) (_ptr) ) ) ? \ 126 (_ptr) : (_ptr) ) ), \ 141 #define EFI_CONFIG_TABLES \ 142 __table ( struct efi_config_table, "efi_config_tables" ) 145 #define __efi_config_table __table_entry ( EFI_CONFIG_TABLES, 01 ) 153 #define EFI_USE_TABLE( _table, _ptr, _required ) \ 154 struct efi_config_table __ ## _table __efi_config_table = { \ 155 .guid = _table ## _GUID, \ 156 .table = ( ( void ** ) ( void * ) (_ptr) ), \ 157 .required = (_required), \ 166 #define EFIRC( rc ) ERRNO_TO_PLATFORM ( -(rc) ) 174 #define EEFI( efirc ) EPLATFORM ( EINFO_EPLATFORM, efirc ) 298 #define DBG_EFI_OPENER_IF( level, handle, protocol, \ 300 if ( DBG_ ## level ) { \ 301 dbg_efi_opener ( handle, protocol, \ 306 #define DBG_EFI_OPENERS_IF( level, handle, protocol ) do { \ 307 if ( DBG_ ## level ) { \ 308 dbg_efi_openers ( handle, protocol ); \ 312 #define DBG_EFI_PROTOCOLS_IF( level, handle ) do { \ 313 if ( DBG_ ## level ) { \ 314 dbg_efi_protocols ( handle ); \ 318 #define DBGC_EFI_OPENER_IF( level, id, ... ) do { \ 319 DBG_AC_IF ( level, id ); \ 320 DBG_EFI_OPENER_IF ( level, __VA_ARGS__ ); \ 321 DBG_DC_IF ( level ); \ 324 #define DBGC_EFI_OPENERS_IF( level, id, ... ) do { \ 325 DBG_AC_IF ( level, id ); \ 326 DBG_EFI_OPENERS_IF ( level, __VA_ARGS__ ); \ 327 DBG_DC_IF ( level ); \ 330 #define DBGC_EFI_PROTOCOL_IF( level, id, ... ) do { \ 331 DBG_AC_IF ( level, id ); \ 332 DBG_EFI_PROTOCOL_IF ( level, __VA_ARGS__ ); \ 333 DBG_DC_IF ( level ); \ 336 #define DBGC_EFI_PROTOCOLS_IF( level, id, ... ) do { \ 337 DBG_AC_IF ( level, id ); \ 338 DBG_EFI_PROTOCOLS_IF ( level, __VA_ARGS__ ); \ 339 DBG_DC_IF ( level ); \ 342 #define DBGC_EFI_OPENER( ... ) \ 343 DBGC_EFI_OPENER_IF ( LOG, ##__VA_ARGS__ ) 344 #define DBGC_EFI_OPENERS( ... ) \ 345 DBGC_EFI_OPENERS_IF ( LOG, ##__VA_ARGS__ ) 346 #define DBGC_EFI_PROTOCOL( ... ) \ 347 DBGC_EFI_PROTOCOL_IF ( LOG, ##__VA_ARGS__ ) 348 #define DBGC_EFI_PROTOCOLS( ... ) \ 349 DBGC_EFI_PROTOCOLS_IF ( LOG, ##__VA_ARGS__ ) 351 #define DBGC2_EFI_OPENER( ... ) \ 352 DBGC_EFI_OPENER_IF ( EXTRA, ##__VA_ARGS__ ) 353 #define DBGC2_EFI_OPENERS( ... ) \ 354 DBGC_EFI_OPENERS_IF ( EXTRA, ##__VA_ARGS__ ) 355 #define DBGC2_EFI_PROTOCOL( ... ) \ 356 DBGC_EFI_PROTOCOL_IF ( EXTRA, ##__VA_ARGS__ ) 357 #define DBGC2_EFI_PROTOCOLS( ... ) \ 358 DBGC_EFI_PROTOCOLS_IF ( EXTRA, ##__VA_ARGS__ ) 360 #define DBGCP_EFI_OPENER( ... ) \ 361 DBGC_EFI_OPENER_IF ( PROFILE, ##__VA_ARGS__ ) 362 #define DBGCP_EFI_OPENERS( ... ) \ 363 DBGC_EFI_OPENERS_IF ( PROFILE, ##__VA_ARGS__ ) 364 #define DBGCP_EFI_PROTOCOL( ... ) \ 365 DBGC_EFI_PROTOCOL_IF ( PROFILE, ##__VA_ARGS__ ) 366 #define DBGCP_EFI_PROTOCOLS( ... ) \ 367 DBGC_EFI_PROTOCOLS_IF ( PROFILE, ##__VA_ARGS__ ) 371 #define EFI_INTF_OP INTF_OP 373 #define EFI_INTF_OP UNUSED_INTF_OP 432 #define efi_test( handle, protocol ) \ 433 efi_open_untyped ( (handle), (protocol), NULL ) 443 #define efi_open( handle, protocol, interface ) ( { \ 444 typeof ( *(interface) ) check_ptr_ptr = NULL; \ 445 efi_open_untyped ( (handle), (protocol), \ 446 ( ( void ) check_ptr_ptr, \ 447 ( void ** ) (interface) ) ); \ 458 #define efi_open_unsafe( handle, protocol, interface ) ( { \ 459 typeof ( *(interface) ) check_ptr_ptr = NULL; \ 460 efi_open_unsafe_untyped ( (handle), (protocol), \ 461 ( ( void ) check_ptr_ptr, \ 462 ( void ** ) (interface) ) ); \ 473 #define efi_open_by_driver( handle, protocol, interface ) ( { \ 474 typeof ( *(interface) ) check_ptr_ptr = NULL; \ 475 efi_open_by_driver_untyped ( (handle), (protocol), \ 476 ( ( void ) check_ptr_ptr, \ 477 ( void ** ) (interface) ) ); \ 489 #define efi_open_by_child( handle, protocol, child, interface ) ( { \ 490 typeof ( *(interface) ) check_ptr_ptr = NULL; \ 491 efi_open_by_child_untyped ( (handle), (protocol), (child), \ 492 ( ( void ) check_ptr_ptr, \ 493 ( void ** ) (interface) ) ); \
void efi_restore_tpl(struct efi_saved_tpl *tpl)
Restore task priority level.
void ** protocol
Variable containing pointer to protocol structure.
EFI_GUID efi_microsoft_vendor_guid
Microsoft vendor GUID.
EFI_GUID efi_pci_root_bridge_io_protocol_guid
PCI root bridge I/O protocol GUID.
EFI_GUID efi_mtftp4_service_binding_protocol_guid
MTFTPv4 service binding protocol GUID.
EFI_GUID efi_component_name2_protocol_guid
Component name 2 protocol GUID.
static void efi_init_stack_guard(EFI_HANDLE handle)
Initialise stack cookie.
EFI_GUID efi_eap_configuration_protocol_guid
EAP configuration protocol GUID.
EFI Oprn Protocol Information Entry.
EFI_GUID efi_ip4_protocol_guid
IPv4 protocol GUID.
EFI_DEVICE_PATH_PROTOCOL * efi_loaded_image_path
Device path for the loaded image's device handle.
EFI_GUID efi_ip6_protocol_guid
IPv6 protocol GUID.
EFI_GUID efi_block_io_protocol_guid
Block I/O protocol GUID.
unsigned long __stack_chk_guard
Stack cookie.
EFI_GUID efi_mtftp6_service_binding_protocol_guid
MTFTPv6 service binding protocol GUID.
EFI_GUID efi_load_file2_protocol_guid
Load file 2 protocol GUID.
EFI_GUID efi_mtftp6_protocol_guid
MTFTPv6 protocol GUID.
EFI_GUID efi_shim_lock_protocol_guid
Shim lock protocol GUID.
EFI_GUID efi_tcp6_service_binding_protocol_guid
TCPv6 service binding protocol GUID.
EFI_GUID efi_simple_file_system_protocol_guid
Simple file system protocol GUID.
EFI_GUID efi_image_security_database_guid
Image security database GUID.
128 bit buffer containing a unique identifier value.
EFI_GUID efi_dhcp4_protocol_guid
DHCPv4 protocol GUID.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
EFI_GUID efi_dhcp6_service_binding_protocol_guid
DHCPv6 service binding protocol GUID.
EFI_GUID efi_simple_pointer_protocol_guid
Simple pointer protocol GUID.
EFI_GUID efi_component_name_protocol_guid
Component name protocol GUID.
EFI_GUID efi_dns4_protocol_guid
DNSv4 protocol GUID.
int efi_open_by_child_untyped(EFI_HANDLE handle, EFI_GUID *protocol, EFI_HANDLE child, void **interface)
Open protocol for persistent use by a child controller.
EFI_GUID efi_tcp4_service_binding_protocol_guid
TCPv4 service binding protocol GUID.
EFI_GUID efi_device_path_protocol_guid
Device path protocol GUID.
EFI_GUID efi_apple_net_boot_protocol_guid
Apple NetBoot protocol GUID.
EFI_GUID efi_loaded_image_protocol_guid
Loaded image protocol GUID.
EFI_GUID efi_acpi_table_protocol_guid
ACPI table protocol GUID.
const char * efi_tpl_name(EFI_TPL tpl)
Name EFI TPL.
EFI_GUID efi_supplicant_protocol_guid
Supplicant protocol GUID.
unsigned long efi_stack_cookie(EFI_HANDLE handle)
Construct a stack cookie value.
const char * efi_locate_search_type_name(EFI_LOCATE_SEARCH_TYPE search_type)
Name locate search type.
void dbg_efi_openers(EFI_HANDLE handle, EFI_GUID *protocol)
Print list of openers of a given protocol on a given handle.
EFI_GUID efi_http_protocol_guid
HTTP protocol GUID.
EFI_GUID efi_tcp6_protocol_guid
TCPv6 protocol GUID.
EFI_GUID efi_unicode_collation_protocol_guid
Unicode collation protocol GUID.
EFI_GUID efi_uga_draw_protocol_guid
UGA draw protocol GUID.
This protocol can be used on any device handle to obtain generic path/location information concerning...
EFI_GUID efi_rng_protocol_guid
Random number generator protocol GUID.
void dbg_efi_opener(EFI_HANDLE handle, EFI_GUID *protocol, EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *opener)
Print opened protocol information.
EFI_GUID efi_load_file_protocol_guid
Load file protocol GUID.
EFI_TPL efi_external_tpl
External task priority level.
void efi_raise_tpl(struct efi_saved_tpl *tpl)
Raise task priority level to internal level.
EFI_LOADED_IMAGE_PROTOCOL * efi_loaded_image
Loaded image protocol for this image.
EFI_GUID efi_fdt_table_guid
FDT table GUID.
Root include file for Mde Package DXE_CORE, DXE, RUNTIME, SMM, SAL type modules.
UEFI 2.0 Loaded image protocol definition.
EFI_GUID efi_storage_security_command_protocol_guid
Storage security protocol GUID.
EFI_GUID efi_cert_x509_guid
X.509 certificate GUID.
An EFI configuration table used by iPXE.
EFI_GUID efi_nii_protocol_guid
Network interface identifier protocol GUID (old version)
EFI_GUID efi_dhcp6_protocol_guid
DHCPv6 protocol GUID.
EFI_GUID efi_smbios2_table_guid
const char * efi_guid_ntoa(CONST EFI_GUID *guid)
Convert GUID to a printable string.
int efi_connect(EFI_HANDLE device, EFI_HANDLE driver)
Connect UEFI driver(s)
EFI_GUID efi_ip6_service_binding_protocol_guid
IPv6 service binding protocol GUID.
Can be used on any image handle to obtain information about the loaded image.
EFI_GUID efi_wifi2_protocol_guid
WiFi 2 protocol GUID.
EFI_GUID efi_global_variable
Global variable GUID.
EFI_TPL current
Current external TPL.
EFI_GUID efi_block_io2_protocol_guid
Block I/O version 2 protocol GUID.
EFI_GUID efi_pxe_base_code_protocol_guid
PXE base code protocol GUID.
EFI_GUID efi_acpi_10_table_guid
ACPI 1.0 table GUID.
EFI_GUID efi_console_control_protocol_guid
Console control protocol GUID.
EFI_GUID efi_dhcp4_service_binding_protocol_guid
DHCPv4 service binding protocol GUID.
const char * efi_devpath_text(EFI_DEVICE_PATH_PROTOCOL *path)
Get textual representation of device path.
EFI_GUID efi_usb2_hc_protocol_guid
USB2 host controller protocol GUID.
EFI_GUID efi_usb_hc_protocol_guid
USB host controller protocol GUID.
EFI_GUID efi_simple_text_input_protocol_guid
Simple text input protocol GUID.
EFI_STATUS efi_init(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
Initialise EFI environment.
EFI_GUID efi_smbios_table_guid
SMBIOS table GUID.
An EFI protocol used by iPXE.
EFI_GUID efi_simple_network_protocol_guid
Simple network protocol GUID.
EFI_GUID efi_simple_text_output_protocol_guid
Simple text output protocol GUID.
EFI_GUID efi_vlan_config_protocol_guid
VLAN configuration protocol GUID.
void dbg_efi_protocol(EFI_HANDLE handle, EFI_GUID *protocol)
Print protocol information on a given handle.
EFI_GUID efi_udp6_service_binding_protocol_guid
UDPv6 service binding protocol GUID.
const char * efi_handle_name(EFI_HANDLE handle)
Get name of an EFI handle.
EFI_GUID efi_graphics_output_protocol_guid
Graphics output protocol GUID.
EFI_GUID efi_bus_specific_driver_override_protocol_guid
Bus specific driver override protocol GUID.
EFI_GUID efi_mtftp4_protocol_guid
MTFTPv4 protocol GUID.
EFI_TPL previous
Previous external TPL.
EFI_GUID efi_dns6_protocol_guid
DNSv6 protocol GUID.
Root include file for Mde Package UEFI, UEFI_APPLICATION type modules.
EFI_GUID efi_hii_font_protocol_guid
HII font protocol GUID.
EFI_GUID efi_simple_text_input_ex_protocol_guid
Simple text input extension protocol GUID.
EFI_GUID efi_dns4_service_binding_protocol_guid
DNSv4 service binding protocol GUID.
int efi_open_by_driver_untyped(EFI_HANDLE handle, EFI_GUID *protocol, void **interface)
Open protocol for persistent use by a driver.
EFI_GUID efi_arp_protocol_guid
ARP protocol GUID.
EFI_GUID efi_acpi_20_table_guid
ACPI 2.0 table GUID.
EFI_GUID efi_tcp4_protocol_guid
TCPv4 protocol GUID.
void efi_close_by_driver(EFI_HANDLE handle, EFI_GUID *protocol)
Close protocol opened for persistent use by a driver.
EFI_GUID efi_tree_protocol_guid
TrEE protocol GUID.
EFI_GUID efi_managed_network_protocol_guid
Managed network protocol GUID.
void efi_close_unsafe(EFI_HANDLE handle, EFI_GUID *protocol)
Close protocol opened for unsafe persistent use.
void ** table
Variable containing pointer to configuration table.
int required
Protocol is required.
EFI_GUID efi_arp_service_binding_protocol_guid
ARP service binding protocol GUID.
EFI_GUID efi_serial_io_protocol_guid
Serial I/O protocol GUID.
EFI_GUID efi_tls_ca_certificate_guid
TLS CA certificate variable GUID.
EFI_GUID efi_udp4_protocol_guid
UDPv4 protocol GUID.
int efi_disconnect(EFI_HANDLE device, EFI_HANDLE driver)
Disconnect UEFI driver(s)
EFI_GUID efi_adapter_information_protocol_guid
Adapter information protocol GUID.
void efi_close_by_child(EFI_HANDLE handle, EFI_GUID *protocol, EFI_HANDLE child)
Close protocol opened for persistent use by a child controller.
EFI_TPL efi_internal_tpl
Internal task priority level.
UINTN EFI_TPL
Task priority level.
An EFI saved task priority level.
EFI_GUID efi_tcg2_protocol_guid
TCG2 protocol GUID.
#define CONST
Datum is read-only.
const char * efi_open_attributes_name(unsigned int attributes)
Name protocol open attributes.
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
EFI_GUID efi_nii31_protocol_guid
Network interface identifier protocol GUID (new version)
int efi_open_unsafe_untyped(EFI_HANDLE handle, EFI_GUID *protocol, void **interface)
Open protocol for unsafe persistent use.
EFI_GUID efi_tcg_protocol_guid
TCG protocol GUID.
EFI_GUID efi_udp4_service_binding_protocol_guid
UDPv4 service binding protocol GUID.
Defines data types and constants introduced in UEFI.
int efi_shutdown_in_progress
EFI shutdown is in progress.
EFI_HANDLE efi_image_handle
Image handle passed to entry point.
EFI_GUID efi_managed_network_service_binding_protocol_guid
Managed network service binding protocol GUID.
EFI_GUID efi_usb_io_protocol_guid
USB I/O protocol GUID.
EFI_GUID efi_file_system_info_id
File system information GUID.
int efi_open_untyped(EFI_HANDLE handle, EFI_GUID *protocol, void **interface)
Open (or test) protocol for ephemeral use.
EFI_GUID efi_dns6_service_binding_protocol_guid
DNSv6 service binding protocol GUID.
void __stack_chk_fail(void)
Abort on stack check failure.
EFI_GUID efi_absolute_pointer_protocol_guid
Absolute pointer protocol GUID.
EFI_GUID efi_hii_config_access_protocol_guid
HII configuration access protocol GUID.
EFI_SYSTEM_TABLE * efi_systab
uint16_t protocol
Protocol ID.
EFI_GUID efi_loaded_image_device_path_protocol_guid
Loaded image device path protocol GUID.
EFI_LOCATE_SEARCH_TYPE
Enumeration of EFI Locate Search Types.
EFI_GUID efi_driver_binding_protocol_guid
Driver binding protocol GUID.
EFI_GUID efi_ip4_config_protocol_guid
IPv4 configuration protocol GUID.
EFI_GUID efi_pci_io_protocol_guid
PCI I/O protocol GUID.
int required
Table is required for operation.
EFI_GUID efi_file_info_id
File information GUID.
EFI_GUID efi_udp6_protocol_guid
UDPv6 protocol GUID.
EFI_GUID efi_ip4_config2_protocol_guid
IPv4 configuration 2 protocol GUID.
EFI_GUID efi_ip6_config_protocol_guid
IPv6 configuration protocol GUID.
EFI_GUID efi_ip4_service_binding_protocol_guid
IPv4 service binding protocol GUID.
EFI_GUID efi_http_service_binding_protocol_guid
HTTP service binding protocol GUID.
EFI_GUID efi_disk_io_protocol_guid
Disk I/O protocol GUID.
void dbg_efi_protocols(EFI_HANDLE handle)
Print list of protocol handlers attached to a handle.