Use *NSYNC for POSIX threads locking APIs

Condition variables, barriers, and r/w locks now work very well.
This commit is contained in:
Justine Tunney 2022-09-11 11:02:07 -07:00
parent 3de35e196c
commit b5cb71ab84
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
197 changed files with 3734 additions and 3817 deletions

View file

@ -1,2 +1,12 @@
.include "o/libc/nt/codegen.inc"
.imp kernel32,__imp_CreateSemaphoreW,CreateSemaphoreW,0
.text.windows
CreateSemaphore:
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_CreateSemaphoreW(%rip),%rax
jmp __sysv2nt
.endfn CreateSemaphore,globl
.previous

View file

@ -166,7 +166,7 @@ imp 'CreateMutexEx' CreateMutexExW kernel32 0
imp 'CreatePrivateNamespace' CreatePrivateNamespaceW kernel32 0
imp 'CreateRemoteThread' CreateRemoteThread kernel32 0
imp 'CreateRemoteThreadEx' CreateRemoteThreadEx kernel32 0
imp 'CreateSemaphore' CreateSemaphoreW kernel32 0
imp 'CreateSemaphore' CreateSemaphoreW kernel32 0 4
imp 'CreateSemaphoreEx' CreateSemaphoreExW kernel32 0
imp 'CreateSymbolicLinkTransacted' CreateSymbolicLinkTransactedW kernel32 238
imp 'CreateTapePartition' CreateTapePartition kernel32 240

View file

@ -82,6 +82,10 @@ bool32 SetWaitableTimer(int64_t hTimer, const int64_t *lpDueTimeAsFtOrNegRela,
int32_t opt_lPeriodMs, NtTimerapcroutine opt_callback,
void *lpArgToCallback, bool32 fUnsleepSystem);
int64_t CreateSemaphore(struct NtSecurityAttributes *opt_lpSemaphoreAttributes,
uint32_t lInitialCount, uint32_t lMaximumCount,
const char16_t *opt_lpName);
int32_t SetEvent(int64_t hEvent);
int32_t ResetEvent(int64_t hEvent);
int32_t PulseEvent(int64_t hEvent);