Sign in
mojo
/
mojo
/
ed4bdf2b045dcf76699eb5095f037df4b8750a28
/
.
/
fusl
/
src
/
thread
/
__lock.c
blob: 0874c04a4c0a81a9fa0dc032479ec18cec81d8aa [
file
] [
log
] [
blame
]
#include
"pthread_impl.h"
void
__lock
(
volatile
int
*
l
)
{
if
(
libc
.
threads_minus_1
)
while
(
a_swap
(
l
,
1
))
__wait
(
l
,
l
+
1
,
1
,
1
);
}
void
__unlock
(
volatile
int
*
l
)
{
if
(
l
[
0
])
{
a_store
(
l
,
0
);
if
(
l
[
1
])
__wake
(
l
,
1
,
1
);
}
}