105 lines
2.4 KiB
C
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);
|
|
efi_status_t (*exit)(efi_handle_t, efi_status_t, uint16_t);
|
|
void (*unused23)();
|
|
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__
|