1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
//! Hikari EFI Runtime Services
const efi = @import("../efi.zig");
const types = @import("../types/types.zig");
const table = @import("../types/table.zig");
const time = @import("../types/time.zig");
const memory = @import("../types/memory.zig");
const reset = @import("../types/reset.zig");
pub const RuntimeServices = extern struct {
header: table.TableHeader,
get_time: *const fn (
current_time: *time.Time,
capabilities: ?*time.TimeCapabilities,
) callconv(efi.akiba) types.Status,
set_time: *const fn (
new_time: *const time.Time,
) callconv(efi.akiba) types.Status,
get_wakeup_time: *const fn (
enabled: *bool,
pending: *bool,
wakeup_time: *time.Time,
) callconv(efi.akiba) types.Status,
set_wakeup_time: *const fn (
enable: bool,
wakeup_time: ?*const time.Time,
) callconv(efi.akiba) types.Status,
set_virtual_address_map: *const fn (
memory_map_size: usize,
descriptor_size: usize,
descriptor_version: u32,
virtual_map: [*]memory.MemoryDescriptor,
) callconv(efi.akiba) types.Status,
convert_pointer: *const fn (
debug_disposition: usize,
address: **anyopaque,
) callconv(efi.akiba) types.Status,
get_variable: *const fn (
variable_name: [*:0]const types.Char16,
vendor_guid: *align(8) const types.Guid,
attributes: ?*u32,
data_size: *usize,
data: ?[*]u8,
) callconv(efi.akiba) types.Status,
get_next_variable_name: *const fn (
variable_name_size: *usize,
variable_name: [*:0]types.Char16,
vendor_guid: *align(8) types.Guid,
) callconv(efi.akiba) types.Status,
set_variable: *const fn (
variable_name: [*:0]const types.Char16,
vendor_guid: *align(8) const types.Guid,
attributes: u32,
data_size: usize,
data: [*]const u8,
) callconv(efi.akiba) types.Status,
get_next_high_monotonic_count: *const fn (
high_count: *u32,
) callconv(efi.akiba) types.Status,
reset_system: *const fn (
reset_type: reset.ResetType,
reset_status: types.Status,
data_size: usize,
reset_data: ?*const anyopaque,
) callconv(efi.akiba) noreturn,
update_capsule: *const fn (
capsule_header_array: **CapsuleHeader,
capsule_count: usize,
scatter_gather_list: types.PhysicalAddress,
) callconv(efi.akiba) types.Status,
query_capsule_capabilities: *const fn (
capsule_header_array: **CapsuleHeader,
capsule_count: usize,
maximum_capsule_size: *u64,
reset_type: *reset.ResetType,
) callconv(efi.akiba) types.Status,
query_variable_info: *const fn (
attributes: u32,
maximum_variable_storage_size: *u64,
remaining_variable_storage_size: *u64,
maximum_variable_size: *u64,
) callconv(efi.akiba) types.Status,
};
pub const CapsuleHeader = extern struct {
capsule_guid: types.Guid,
header_size: u32,
flags: u32,
capsule_image_size: u32,
};
pub const variable_non_volatile: u32 = 0x00000001;
pub const variable_bootservice_access: u32 = 0x00000002;
pub const variable_runtime_access: u32 = 0x00000004;
pub const variable_hardware_error_record: u32 = 0x00000008;
pub const variable_authenticated_write_access: u32 = 0x00000010;
pub const variable_time_based_authenticated_write_access: u32 = 0x00000020;
pub const variable_append_write: u32 = 0x00000040;
pub const variable_enhanced_authenticated_access: u32 = 0x00000080;
pub const capsule_flags_persist_across_reset: u32 = 0x00010000;
pub const capsule_flags_populate_system_table: u32 = 0x00020000;
pub const capsule_flags_initiate_reset: u32 = 0x00040000;
|