Go to the source code of this file.
Macros | |
#define | PARAM_ASSERTIONS_ENABLED_SYNC 0 |
#define | PICO_SPINLOCK_ID_IRQ 9 |
#define | PICO_SPINLOCK_ID_TIMER 10 |
#define | PICO_SPINLOCK_ID_HARDWARE_CLAIM 11 |
#define | PICO_SPINLOCK_ID_RAND 12 |
#define | PICO_SPINLOCK_ID_OS1 14 |
#define | PICO_SPINLOCK_ID_OS2 15 |
#define | PICO_SPINLOCK_ID_STRIPED_FIRST 16 |
#define | PICO_SPINLOCK_ID_STRIPED_LAST 23 |
#define | PICO_SPINLOCK_ID_CLAIM_FREE_FIRST 24 |
#define | PICO_SPINLOCK_ID_CLAIM_FREE_LAST 31 |
#define | remove_volatile_cast(t, x) ({__mem_fence_acquire(); (t)(x); }) |
Typedefs | |
typedef volatile uint32_t | spin_lock_t |
A spin lock identifier. | |
Functions | |
static __force_inline void | __sev (void) |
Insert a SEV instruction in to the code path. More... | |
static __force_inline void | __wfe (void) |
Insert a WFE instruction in to the code path. More... | |
static __force_inline void | __wfi (void) |
Insert a WFI instruction in to the code path. More... | |
static __force_inline void | __dmb (void) |
Insert a DMB instruction in to the code path. More... | |
static __force_inline void | __dsb (void) |
Insert a DSB instruction in to the code path. More... | |
static __force_inline void | __isb (void) |
Insert a ISB instruction in to the code path. More... | |
static __force_inline void | __mem_fence_acquire (void) |
Acquire a memory fence. | |
static __force_inline void | __mem_fence_release (void) |
Release a memory fence. | |
static __force_inline uint32_t | save_and_disable_interrupts (void) |
Save and disable interrupts. More... | |
static __force_inline void | restore_interrupts (uint32_t status) |
Restore interrupts to a specified state. More... | |
static __force_inline spin_lock_t * | spin_lock_instance (uint lock_num) |
Get HW Spinlock instance from number. More... | |
static __force_inline uint | spin_lock_get_num (spin_lock_t *lock) |
Get HW Spinlock number from instance. More... | |
static __force_inline void | spin_lock_unsafe_blocking (spin_lock_t *lock) |
Acquire a spin lock without disabling interrupts (hence unsafe) More... | |
static __force_inline void | spin_unlock_unsafe (spin_lock_t *lock) |
Release a spin lock without re-enabling interrupts. More... | |
static __force_inline uint32_t | spin_lock_blocking (spin_lock_t *lock) |
Acquire a spin lock safely. More... | |
static bool | is_spin_locked (spin_lock_t *lock) |
Check to see if a spinlock is currently acquired elsewhere. More... | |
static __force_inline void | spin_unlock (spin_lock_t *lock, uint32_t saved_irq) |
Release a spin lock safely. More... | |
spin_lock_t * | spin_lock_init (uint lock_num) |
Initialise a spin lock. More... | |
void | spin_locks_reset (void) |
Release all spin locks. | |
uint | next_striped_spin_lock_num (void) |
Return a spin lock number from the striped range. More... | |
void | spin_lock_claim (uint lock_num) |
Mark a spin lock as used. More... | |
void | spin_lock_claim_mask (uint32_t lock_num_mask) |
Mark multiple spin locks as used. More... | |
void | spin_lock_unclaim (uint lock_num) |
Mark a spin lock as no longer used. More... | |
int | spin_lock_claim_unused (bool required) |
Claim a free spin lock. More... | |
bool | spin_lock_is_claimed (uint lock_num) |
Determine if a spin lock is claimed. More... | |