1use crate::capsule::CapsuleHeader;
2use crate::memory::{MemoryDescriptor, PhysicalAddress};
3use crate::prelude::*;
4use crate::reset::ResetType;
5use crate::time::{Time, TimeCapabilities};
6use crate::TableHeader;
7
8#[repr(C)]
9pub struct RuntimeServices {
10 pub Hdr: TableHeader,
11
12 pub GetTime: extern "efiapi" fn(Time: &mut Time, Capabilities: *mut TimeCapabilities) -> Status,
13
14 pub SetTime: extern "efiapi" fn(Time: &Time) -> Status,
15
16 pub GetWakeupTime:
17 extern "efiapi" fn(Enabled: &mut bool, Pending: &mut bool, Time: &mut Time) -> Status,
18
19 pub SetWakeupTime: extern "efiapi" fn(Enable: bool, Time: *const Time) -> Status,
20
21 pub SetVirtualAddressMap: extern "efiapi" fn(
22 MemoryMapSize: usize,
23 DescriptorSize: usize,
24 DescriptorVersion: u32,
25 VirtualMap: *const MemoryDescriptor,
26 ) -> Status,
27
28 pub ConvertPointer: extern "efiapi" fn(DebugDisposition: usize, Address: &mut usize) -> Status,
29
30 pub GetVariable: extern "efiapi" fn(
31 VariableName: *const u16,
32 VendorGuid: &Guid,
33 Attributes: *mut u32,
34 DataSize: &mut usize,
35 Data: *mut u8,
36 ) -> Status,
37
38 pub GetNextVariableName: extern "efiapi" fn(
39 VariableNameSize: &mut usize,
40 VariableName: *mut u16,
41 VendorGuid: &mut Guid,
42 ) -> Status,
43
44 pub SetVariable: extern "efiapi" fn(
45 VariableName: *const u16,
46 VendorGuid: &Guid,
47 Attributes: u32,
48 DataSize: usize,
49 Data: *const u8,
50 ) -> Status,
51
52 pub GetNextHighMonotonicCount: extern "efiapi" fn(HighCount: &mut u32) -> Status,
53
54 pub ResetSystem: extern "efiapi" fn(
55 ResetType: ResetType,
56 ResetStatus: Status,
57 DataSize: usize,
58 ResetData: *const u8,
59 ) -> !,
60
61 pub UpdateCapsule: extern "efiapi" fn(
62 CapsuleHeaderArray: *const *const CapsuleHeader,
63 CapsuleCount: usize,
64 ScatterGatherList: PhysicalAddress,
65 ) -> Status,
66
67 pub QueryCapsuleCapabilities: extern "efiapi" fn(
68 CapsuleHeaderArray: *const *const CapsuleHeader,
69 CapsuleCount: usize,
70 MaximumCapsuleSize: &mut u64,
71 ResetType: &mut ResetType,
72 ) -> Status,
73
74 pub QueryVariableInfo: extern "efiapi" fn(
75 Attributes: u32,
76 MaximumVariableStorageSize: &mut u64,
77 RemainingVariableStorageSize: &mut u64,
78 MaximumVariableSize: &mut u64,
79 ) -> Status,
80}