MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / rt_hw_spin_lock

Function rt_hw_spin_lock

libcpu/aarch64/common/cpu.c:127–143  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

125}
126
127void rt_hw_spin_lock(rt_hw_spinlock_t *_lock)
128{
129 union _spinlock *lock = (void *)_lock;
130 rt_uint16_t ticket =
131 atomic_fetch_add_explicit(&lock->ticket.next, 1, memory_order_relaxed);
132
133 if (atomic_load_explicit(&lock->ticket.owner, memory_order_acquire) !=
134 ticket)
135 {
136 _send_event_local();
137 do
138 {
139 _wait_for_event();
140 }
141 while (_load_acq_exclusive(&lock->ticket.owner) != ticket);
142 }
143}
144
145void rt_hw_spin_unlock(rt_hw_spinlock_t *_lock)
146{

Callers 15

spin_lockFunction · 0.50
rt_pci_irq_maskFunction · 0.50
pci_single_showFunction · 0.50
spin_lockFunction · 0.50
spin_lockFunction · 0.50
rt_pci_msi_setup_irqsFunction · 0.50
_dm_bus_lockFunction · 0.50

Calls 2

_send_event_localFunction · 0.85
_wait_for_eventFunction · 0.70

Tested by

no test coverage detected