pub struct Register<T: RegisterValue> {
inner: Arc<Mutex<RegisterInner<T>>>,
}Expand description
Register is a thread safe struct. It can be safely changed from any thread.
Fields§
§inner: Arc<Mutex<RegisterInner<T>>>Implementations§
Source§impl<T: RegisterValue> Register<T>
impl<T: RegisterValue> Register<T>
pub fn new(spec: RegisterSpec<T>, val: T) -> Self
fn lock(&self) -> MutexGuard<'_, RegisterInner<T>>
Source§impl<T: RegisterValue> Register<T>
impl<T: RegisterValue> Register<T>
Sourcepub fn apply_write_masks_to_byte(
&self,
old_byte: u8,
write_byte: u8,
offset: usize,
) -> u8
pub fn apply_write_masks_to_byte( &self, old_byte: u8, write_byte: u8, offset: usize, ) -> u8
This function apply “write 1 to clear mask” and “guest writeable mask”. All write operations should go through this, the result of this function is the new state of correspoding byte.
Sourcepub fn set_write_cb<C: 'static + Fn(T) -> T + Send>(&self, callback: C)
pub fn set_write_cb<C: 'static + Fn(T) -> T + Send>(&self, callback: C)
Set a callback. It will be invoked when write happens.
Sourcepub fn clear_bits(&self, mask: T)
pub fn clear_bits(&self, mask: T)
Clear masked bits.
Trait Implementations§
Source§impl<T: RegisterValue> RegisterInterface for Register<T>
impl<T: RegisterValue> RegisterInterface for Register<T>
Auto Trait Implementations§
impl<T> Freeze for Register<T>
impl<T> RefUnwindSafe for Register<T>
impl<T> Send for Register<T>
impl<T> Sync for Register<T>
impl<T> Unpin for Register<T>
impl<T> UnwindSafe for Register<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.