pub struct Sema { /* private fields */ }Expand description
The Semaphore peripheral allows multiple cores in a system to cooperate when accessing shred resources. The peripheral contains eight semaphores that can be atomically set and cleared. It is left to the discretion of the software architect to decide how and when the semaphores are used and how they are allocated. Existing hardware does not have to be modified for this type of cooperative sharing, and the use of semaphores is exclusively within the software domain.
Implementations§
Source§impl Sema
impl Sema
Sourcepub const PTR: *const RegisterBlock = {0x4003e000 as *const sema::RegisterBlock}
pub const PTR: *const RegisterBlock = {0x4003e000 as *const sema::RegisterBlock}
Pointer to the register block
Sourcepub const fn ptr() -> *const RegisterBlock
pub const fn ptr() -> *const RegisterBlock
Return the pointer to the register block
Sourcepub unsafe fn steal() -> Self
pub unsafe fn steal() -> Self
Steal an instance of this peripheral
§Safety
Ensure that the new instance of the peripheral cannot be used in a way that may race with any existing instances, for example by only accessing read-only or write-only registers, or by consuming the original peripheral and using critical sections to coordinate access between multiple new instances.
Additionally, other software such as HALs may rely on only one peripheral instance existing to ensure memory safety; ensure no stolen instances are passed to such software.
Methods from Deref<Target = RegisterBlock>§
Sourcepub fn semaphores(&self, n: usize) -> &Semaphores
pub fn semaphores(&self, n: usize) -> &Semaphores
0x00..0x20 - Read to test and set, returns prior value. Write 0 to clear semaphore.
Sourcepub fn semaphores_iter(&self) -> impl Iterator<Item = &Semaphores>
pub fn semaphores_iter(&self) -> impl Iterator<Item = &Semaphores>
Iterator for array of: 0x00..0x20 - Read to test and set, returns prior value. Write 0 to clear semaphore.