Include implementation of musl's __lock/__unlock functions. NFC #16129
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The functions
__lockand__unlockare never called directly withinmusl but always via the
LOCK()andUNLOCK()macros.They are implemented internally using an atomic integer along with the
__wakeand__futexwaitinternal function which emscripten alreadysupports.
Not to be confused with
__lockfile/__unlockfilewhich are used toimplement the
FLOCK()/FUNLOCK()macros (which we already support andhave enabled).
In theory this could help remove data races and crashed within musl.
In practice many of the uses of
LOCK/UNLOCKare in places not compiledinto emscripten. However I noticed at least these 3 that we do depend
on and they do look useful/valid:
don't use __stdio_exit.c under emscripten)