mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-09 23:24:44 +00:00
This implementation doesn't work as well as WIN32 futexes. This code path was only added back when we were having issues with set context however that's been solved so we can go back to the much better code |
||
---|---|---|
.. | ||
mem | ||
testing | ||
array.internal.h | ||
atomic.h | ||
atomic.internal.h | ||
common.c | ||
common.internal.h | ||
compat.S | ||
counter.h | ||
cv.h | ||
debug.h | ||
futex.c | ||
futex.internal.h | ||
heap.internal.h | ||
LICENSE.txt | ||
mu.c | ||
mu.h | ||
mu_semaphore.c | ||
mu_semaphore.h | ||
mu_semaphore.internal.h | ||
mu_semaphore_futex.c | ||
mu_semaphore_gcd.c | ||
mu_semaphore_sem.c | ||
mu_wait.h | ||
note.h | ||
nsync.mk | ||
once.h | ||
panic.c | ||
races.internal.h | ||
README.cosmo | ||
README.md | ||
time.h | ||
wait_s.internal.h | ||
waiter.h | ||
yield.c |
*NSYNC
*NSYNC is a library providing scalable synchronization primitives. The following packages are provided:
THIRD_PARTY_NSYNC
hasnsync_mu
which doesn't depend on malloc().THIRD_PARTY_NSYNC_MEM
has the rest of *NSYNC, e.g.nsync_cv
.
The origin of this code is here:
git@github.com:google/nsync
ac5489682760393fe21bd2a8e038b528442412a7 (1.25.0)
Author: Mike Burrows <m3b@google.com>
Date: Wed Jun 1 16:47:52 2022 -0700
NSYNC uses the Apache 2.0 license. We made the following local changes:
-
Write custom
nsync_malloc_()
somalloc()
can use *NSYNC. -
Rewrite
futex()
wrapper to support old Linux kernels and OpenBSD. -
Normalize sources to Cosmopolitan style conventions; *NSYNC upstream supports dozens of compilers and operating systems, at compile-time. Since Cosmo solves portability at runtime instead, most of the build config toil has been removed, in order to help the NSYNC source code be more readable and hackable.