179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
#endif
}
static OF_INLINE bool
of_spinlock_trylock(of_spinlock_t *spinlock)
{
#if defined(OF_HAVE_ATOMIC_OPS)
return of_atomic_int_cmpswap(spinlock, 0, 1);
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
return !pthread_spin_trylock(spinlock);
#else
return of_mutex_trylock(spinlock);
#endif
}
|
|
>
>
>
>
>
|
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
#endif
}
static OF_INLINE bool
of_spinlock_trylock(of_spinlock_t *spinlock)
{
#if defined(OF_HAVE_ATOMIC_OPS)
if (of_atomic_int_cmpswap(spinlock, 0, 1)) {
of_memory_enter_barrier();
return true;
}
return false;
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
return !pthread_spin_trylock(spinlock);
#else
return of_mutex_trylock(spinlock);
#endif
}
|
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
|
#endif
}
static OF_INLINE bool
of_spinlock_unlock(of_spinlock_t *spinlock)
{
#if defined(OF_HAVE_ATOMIC_OPS)
return of_atomic_int_cmpswap(spinlock, 1, 0);
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
return !pthread_spin_unlock(spinlock);
#else
return of_mutex_unlock(spinlock);
#endif
}
|
|
>
>
>
>
|
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
#endif
}
static OF_INLINE bool
of_spinlock_unlock(of_spinlock_t *spinlock)
{
#if defined(OF_HAVE_ATOMIC_OPS)
bool ret = of_atomic_int_cmpswap(spinlock, 1, 0);
of_memory_leave_barrier();
return ret;
#elif defined(OF_HAVE_PTHREAD_SPINLOCKS)
return !pthread_spin_unlock(spinlock);
#else
return of_mutex_unlock(spinlock);
#endif
}
|