vmlock.c\thread\src - musl - musl - an implementation of the standard library for Linux-based systems

index : musl
musl - an implementation of the standard library for Linux-based systems
summary refs log tree commit diff
path: root/src/thread/vmlock.c
blob: fa0a8e3c2ed631572834329ba30ce76c4c4b2364 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "pthread_impl.h"
#include "fork_impl.h"
static volatile int vmlock[2];
volatile int *const __vmlock_lockptr = vmlock;
void __vm_wait()
{
	int tmp;
	while ((tmp=vmlock[0]))
		__wait(vmlock, vmlock+1, tmp, 1);
}
void __vm_lock()
{
	a_inc(vmlock);
}
void __vm_unlock()
{
	if (a_fetch_add(vmlock, -1)==1 && vmlock[1])
		__wake(vmlock, -1, 1);
}
generated by cgit v1.2.1 (git 2.18.0) at 2025年09月07日 04:24:38 +0000

AltStyle によって変換されたページ (->オリジナル) /