diff options
author | Rich Felker <dalias@aerifal.cx> | 2020-05-22 17:45:47 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2020-05-22 17:45:47 -0400 |
commit | 8d81ba8c0bc6fe31136cb15c9c82ef4c24965040 (patch) | |
tree | 356aea3c8d201c577158b163eace2e0014e03fed /src/internal | |
parent | f12888e9eb9eed60cc266b899dcafecb4752964a (diff) | |
download | musl-8d81ba8c0bc6fe31136cb15c9c82ef4c24965040.tar.gz musl-8d81ba8c0bc6fe31136cb15c9c82ef4c24965040.tar.bz2 musl-8d81ba8c0bc6fe31136cb15c9c82ef4c24965040.tar.xz musl-8d81ba8c0bc6fe31136cb15c9c82ef4c24965040.zip |
restore lock-skipping for processes that return to single-threaded state
the design used here relies on the barrier provided by the first lock
operation after the process returns to single-threaded state to
synchronize with actions by the last thread that exited. by storing
the intent to change modes in the same object used to detect whether
locking is needed, it's possible to avoid an extra (possibly costly)
memory load after the lock is taken.
Diffstat (limited to 'src/internal')
-rw-r--r-- | src/internal/libc.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/internal/libc.h b/src/internal/libc.h index d47f58e0..619bba86 100644 --- a/src/internal/libc.h +++ b/src/internal/libc.h @@ -21,6 +21,7 @@ struct __libc { char can_do_threads; char threaded; char secure; + volatile signed char need_locks; int threads_minus_1; size_t *auxv; struct tls_module *tls_head; |