stage0-uefi/Development/efi/boot_table.h

105 lines
2.4 KiB
C

/* SPDX-FileCopyrightText: Mike Krinkin */
/* SPDX-License-Identifier: Unlicense */
#ifndef __EFI_BOOT_TABLE_H__
#define __EFI_BOOT_TABLE_H__
#include "device_path_protocol.h"
#include "types.h"
static const uint32_t EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL = 0x00000001;
struct efi_boot_table
{
struct efi_table_header header;
// Task Priority Services
void (*unused1)();
void (*unused2)();
// Memory Services
efi_status_t (*allocate_pages)(
enum efi_allocate_type,
enum efi_memory_type,
efi_uint_t,
uint64_t *);
efi_status_t (*free_pages)(uint64_t, efi_uint_t);
efi_status_t (*get_memory_map)(
efi_uint_t *,
struct efi_memory_descriptor *,
efi_uint_t *,
efi_uint_t *,
uint32_t *);
efi_status_t (*allocate_pool)(
enum efi_memory_type, efi_uint_t, void **);
efi_status_t (*free_pool)(void *);
// Event & Timer Services
void (*unused7)();
void (*unused8)();
void (*unused9)();
void (*unused10)();
void (*unused11)();
void (*unused12)();
// Protocol Handler Services
void (*unused13)();
void (*unused14)();
void (*unused15)();
void (*unused16)();
void *reserved;
void (*unused17)();
void (*unused18)();
void (*unused19)();
void (*unused20)();
// Image Services
efi_status_t (*load_image)(uint8_t, efi_handle_t, struct efi_device_path_protocol*, void *, efi_uint_t, efi_handle_t);
efi_status_t (*start_image)(efi_handle_t, efi_uint_t *, uint16_t);
void (*unused23)();
efi_status_t (*exit)(efi_handle_t, efi_status_t, uint16_t);
efi_status_t (*exit_boot_services)(efi_handle_t, efi_uint_t);
// Miscellaneous Services
efi_status_t (*set_watchdog_timer)(efi_uint_t timeout, uint64_t watchdog_code, efi_uint_t data_size, uint16_t *watchdog_data);
void (*unused27)();
void (*unused28)();
// DriverSupport Services
void (*unused29)();
void (*unused30)();
// Open and Close Protocol Services
efi_status_t (*open_protocol)(
efi_handle_t,
struct efi_guid *,
void **,
efi_handle_t,
efi_handle_t,
uint32_t);
efi_status_t (*close_protocol)(
efi_handle_t,
struct efi_guid *,
efi_handle_t,
efi_handle_t);
void (*unused33)();
// Library Services
efi_status_t (*protocols_per_handle)(
efi_handle_t, struct efi_guid ***, efi_uint_t *);
void (*unused35)();
void (*unused36)();
void (*unused37)();
void (*unused38)();
// 32-bit CRC Services
void (*unused39)();
// Miscellaneous Services (cont)
void (*unused40)();
void (*unused41)();
void (*unused42)();
};
#endif // __EFI_BOOT_TABLE_H__