Struct lc3_ensemble::sim::io::BufferedIO

source ·
pub struct BufferedIO { /* private fields */ }
Expand description

IO that reads from an input buffer and writes to an output buffer.

The input buffer is accessible in the simulator memory through the KBSR and KBDR. The output buffer is accessible in the simulator memory through the DSR and DDR.

The buffers can be accessed in code via BufferedIO::get_input and BufferedIO::get_output.

Note that if a input/output lock guard is acquired from one of the locks of this IO, the input/output becomes temporarily inaccessible to the simulator. Thus, a lock guard should never be leaked otherwise the simulator loses access to the input/output.

Implementations§

source§

impl BufferedIO

source

pub fn new() -> Self

Creates a new BufferedIO.

source

pub fn with_bufs( input: Arc<RwLock<VecDeque<u8>>>, output: Arc<RwLock<Vec<u8>>>, ) -> Self

Creates a new BufferedIO from already defined buffers.

source

pub fn get_input(&self) -> &Arc<RwLock<VecDeque<u8>>>

Gets a reference to the input buffer.

source

pub fn get_output(&self) -> &Arc<RwLock<Vec<u8>>>

Gets a reference to the output buffer.

Trait Implementations§

source§

impl Clone for BufferedIO

source§

fn clone(&self) -> BufferedIO

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Default for BufferedIO

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl IODevice for BufferedIO

source§

fn io_read(&mut self, addr: u16) -> Option<u16>

Reads the data at the given memory-mapped address. Read more
source§

fn io_write(&mut self, addr: u16, data: u16) -> bool

Writes the data to the given memory-mapped address. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V