Struct devices::register_space::register::Register
source · 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> 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
§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.