pub struct VirtIOConsole<H: Hal, T: Transport> { /* private fields */ }Expand description
Driver for a VirtIO console device.
Only a single port is supported.
§Example
use virtio_drivers::device::console::VirtIOConsole;
let mut console = VirtIOConsole::<HalImpl, _>::new(transport)?;
let size = console.size().unwrap().unwrap();
println!("VirtIO console {}x{}", size.rows, size.columns);
for &c in b"Hello console!\n" {
console.send(c)?;
}
let c = console.recv(true)?;
println!("Read {:?} from console.", c);Implementations§
Source§impl<H: Hal, T: Transport> VirtIOConsole<H, T>
impl<H: Hal, T: Transport> VirtIOConsole<H, T>
Sourcepub fn size(&self) -> Result<Option<Size>>
pub fn size(&self) -> Result<Option<Size>>
Returns the size of the console, if the device supports reporting this.
Sourcepub fn ack_interrupt(&mut self) -> Result<bool>
pub fn ack_interrupt(&mut self) -> Result<bool>
Acknowledges a pending interrupt, if any, and completes the outstanding finished read request if there is one.
Returns true if new data has been received.
Sourcepub fn recv(&mut self, pop: bool) -> Result<Option<u8>>
pub fn recv(&mut self, pop: bool) -> Result<Option<u8>>
Returns the next available character from the console, if any.
If no data has been received this will not block but immediately return Ok<None>.
Sourcepub fn send_bytes(&mut self, buffer: &[u8]) -> Result
pub fn send_bytes(&mut self, buffer: &[u8]) -> Result
Sends one or more bytes to the console.
Sourcepub fn emergency_write(&mut self, chr: u8) -> Result<()>
pub fn emergency_write(&mut self, chr: u8) -> Result<()>
Sends a character to the console using the emergency write feature.
Returns an error if the device doesn’t support emergency write.