|
@@ -39,6 +39,8 @@
|
|
|
typedef unsigned long efi_status_t;
|
|
|
typedef u8 efi_bool_t;
|
|
|
typedef u16 efi_char16_t; /* UNICODE character */
|
|
|
+typedef u64 efi_physical_addr_t;
|
|
|
+typedef void *efi_handle_t;
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
@@ -96,6 +98,7 @@ typedef struct {
|
|
|
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
|
|
|
|
|
#define EFI_PAGE_SHIFT 12
|
|
|
+#define EFI_PAGE_SIZE (1UL << EFI_PAGE_SHIFT)
|
|
|
|
|
|
typedef struct {
|
|
|
u32 type;
|
|
@@ -157,11 +160,13 @@ typedef struct {
|
|
|
efi_table_hdr_t hdr;
|
|
|
void *raise_tpl;
|
|
|
void *restore_tpl;
|
|
|
- void *allocate_pages;
|
|
|
- void *free_pages;
|
|
|
- void *get_memory_map;
|
|
|
- void *allocate_pool;
|
|
|
- void *free_pool;
|
|
|
+ efi_status_t (*allocate_pages)(int, int, unsigned long,
|
|
|
+ efi_physical_addr_t *);
|
|
|
+ efi_status_t (*free_pages)(efi_physical_addr_t, unsigned long);
|
|
|
+ efi_status_t (*get_memory_map)(unsigned long *, void *, unsigned long *,
|
|
|
+ unsigned long *, u32 *);
|
|
|
+ efi_status_t (*allocate_pool)(int, unsigned long, void **);
|
|
|
+ efi_status_t (*free_pool)(void *);
|
|
|
void *create_event;
|
|
|
void *set_timer;
|
|
|
void *wait_for_event;
|
|
@@ -171,7 +176,7 @@ typedef struct {
|
|
|
void *install_protocol_interface;
|
|
|
void *reinstall_protocol_interface;
|
|
|
void *uninstall_protocol_interface;
|
|
|
- void *handle_protocol;
|
|
|
+ efi_status_t (*handle_protocol)(efi_handle_t, efi_guid_t *, void **);
|
|
|
void *__reserved;
|
|
|
void *register_protocol_notify;
|
|
|
void *locate_handle;
|
|
@@ -181,7 +186,7 @@ typedef struct {
|
|
|
void *start_image;
|
|
|
void *exit;
|
|
|
void *unload_image;
|
|
|
- void *exit_boot_services;
|
|
|
+ efi_status_t (*exit_boot_services)(efi_handle_t, unsigned long);
|
|
|
void *get_next_monotonic_count;
|
|
|
void *stall;
|
|
|
void *set_watchdog_timer;
|
|
@@ -494,10 +499,6 @@ typedef struct {
|
|
|
unsigned long unload;
|
|
|
} efi_loaded_image_t;
|
|
|
|
|
|
-typedef struct {
|
|
|
- u64 revision;
|
|
|
- void *open_volume;
|
|
|
-} efi_file_io_interface_t;
|
|
|
|
|
|
typedef struct {
|
|
|
u64 size;
|
|
@@ -510,20 +511,30 @@ typedef struct {
|
|
|
efi_char16_t filename[1];
|
|
|
} efi_file_info_t;
|
|
|
|
|
|
-typedef struct {
|
|
|
+typedef struct _efi_file_handle {
|
|
|
u64 revision;
|
|
|
- void *open;
|
|
|
- void *close;
|
|
|
+ efi_status_t (*open)(struct _efi_file_handle *,
|
|
|
+ struct _efi_file_handle **,
|
|
|
+ efi_char16_t *, u64, u64);
|
|
|
+ efi_status_t (*close)(struct _efi_file_handle *);
|
|
|
void *delete;
|
|
|
- void *read;
|
|
|
+ efi_status_t (*read)(struct _efi_file_handle *, unsigned long *,
|
|
|
+ void *);
|
|
|
void *write;
|
|
|
void *get_position;
|
|
|
void *set_position;
|
|
|
- void *get_info;
|
|
|
+ efi_status_t (*get_info)(struct _efi_file_handle *, efi_guid_t *,
|
|
|
+ unsigned long *, void *);
|
|
|
void *set_info;
|
|
|
void *flush;
|
|
|
} efi_file_handle_t;
|
|
|
|
|
|
+typedef struct _efi_file_io_interface {
|
|
|
+ u64 revision;
|
|
|
+ int (*open_volume)(struct _efi_file_io_interface *,
|
|
|
+ efi_file_handle_t **);
|
|
|
+} efi_file_io_interface_t;
|
|
|
+
|
|
|
#define EFI_FILE_MODE_READ 0x0000000000000001
|
|
|
#define EFI_FILE_MODE_WRITE 0x0000000000000002
|
|
|
#define EFI_FILE_MODE_CREATE 0x8000000000000000
|
|
@@ -792,6 +803,13 @@ struct efivar_entry {
|
|
|
struct kobject kobj;
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+struct efi_simple_text_output_protocol {
|
|
|
+ void *reset;
|
|
|
+ efi_status_t (*output_string)(void *, void *);
|
|
|
+ void *test_string;
|
|
|
+};
|
|
|
+
|
|
|
extern struct list_head efivar_sysfs_list;
|
|
|
|
|
|
static inline void
|