uefi/
system.rs

1use core::slice;
2
3use crate::boot::BootServices;
4use crate::config::ConfigurationTable;
5use crate::prelude::*;
6use crate::runtime::RuntimeServices;
7use crate::text::{TextInput, TextOutput};
8use crate::TableHeader;
9
10#[repr(C)]
11pub struct SystemTable {
12    pub Hdr: TableHeader,
13    pub FirmwareVendor: *const u16,
14    pub FirmwareRevision: u32,
15    pub ConsoleInHandle: Handle,
16    pub ConsoleIn: &'static mut TextInput,
17    pub ConsoleOutHandle: Handle,
18    pub ConsoleOut: &'static mut TextOutput,
19    pub ConsoleErrorHandle: Handle,
20    pub ConsoleError: &'static mut TextOutput,
21    pub RuntimeServices: &'static mut RuntimeServices,
22    pub BootServices: &'static mut BootServices,
23    Entries: usize,
24    ConfigurationTables: *const ConfigurationTable,
25}
26
27impl SystemTable {
28    pub fn config_tables(&self) -> &'static [ConfigurationTable] {
29        unsafe { slice::from_raw_parts(self.ConfigurationTables, self.Entries) }
30    }
31}