1
6
7
8
13
14
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/* ... */
#include "hardware/sync/spin_lock.h"
void spin_locks_reset(void) {
for (uint i = 0; i < NUM_SPIN_LOCKS; i++) {
spin_unlock_unsafe(spin_lock_instance(i));
}for (uint i = 0; i < NUM_SPIN_LOCKS; i++) { ... }
}{ ... }
spin_lock_t *spin_lock_init(uint lock_num) {
assert(lock_num < NUM_SPIN_LOCKS);
spin_lock_t *lock = spin_lock_instance(lock_num);
spin_unlock_unsafe(lock);
return lock;
}{ ... }
#if PICO_USE_SW_SPIN_LOCKS
spin_lock_t _sw_spin_locks[NUM_SPIN_LOCKS];
#if __ARM_ARCH_8M_MAIN__ && !PICO_SW_SPIN_LOCKS_NO_EXTEXCLALL
#include "pico/runtime_init.h"
#include "hardware/structs/m33.h"
static void spinlock_set_extexclall(void) {
m33_hw->actlr |= M33_ACTLR_EXTEXCLALL_BITS;
}{ ... }
PICO_RUNTIME_INIT_FUNC_PER_CORE(spinlock_set_extexclall, PICO_RUNTIME_INIT_SPIN_LOCKS_RESET);/* ... */
#endif/* ... */
#endif