use super::Header;
use crate::prelude::*;
use crate::proto::console::text::SimpleTextInput;
use crate::proto::console::text::SimpleTextOutput;
use crate::table::BootServices;
use crate::table::RuntimeServices;
#[repr(C)]
pub struct SystemTable {
pub Hdr: Header,
pub FirmwareVendor: *const u16,
pub FirmwareRevision: u32,
pub ConsoleInHandle: Handle,
pub ConIn: *mut SimpleTextInput,
pub ConsoleOutHandle: Handle,
pub ConOut: *mut SimpleTextOutput,
pub StandardErrorHandle: Handle,
pub StdErr: *mut SimpleTextOutput,
pub RuntimeServices: *mut RuntimeServices,
pub BootServices: *mut BootServices,
pub NumberOfTableEntries: usize,
pub ConfigurationTable: *mut usize,
}
impl SystemTable {
pub fn header(&self) -> &Header {
&self.Hdr
}
pub fn revision(&self) -> u32 {
self.FirmwareRevision
}
pub fn boot_services(&mut self) -> &mut BootServices {
unsafe { &mut *self.BootServices }
}
pub fn runtime_services(&mut self) -> &mut RuntimeServices {
unsafe { &mut *self.RuntimeServices }
}
pub fn stdin(&mut self) -> &mut SimpleTextInput {
unsafe { &mut *self.ConIn }
}
pub fn stdout(&mut self) -> &mut SimpleTextOutput {
unsafe { &mut *self.ConOut }
}
pub fn stderr(&mut self) -> &mut SimpleTextOutput {
unsafe { &mut *self.StdErr }
}
}