uefi/
runtime.rs

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}