blob: 557c6a62329e856537f4e7fe69e4e447bbd0c1f3 (
plain) (
tree)
|
|
#define SYSCALL_RETURN_ERRNO
#include "pthread_impl.h"
void __lock(volatile int *l)
{
int spins=100000;
/* Do not use futexes because we insist that unlocking is a simple
* assignment to optimize non-pathological code with no contention. */
while (a_xchg(l, 1))
if (spins) spins--, a_spin();
else syscall0(__NR_sched_yield);
}
|