summaryrefslogtreecommitdiff
path: root/scripts/Makefile.thinlto
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2026-10-12 09:20:55 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2026-10-17 10:30:20 -0300
commit4456c404c6bb2e978769f5f27090deee3457f95c (patch)
treee3b3fa302b2ecd6aade711c3260911f98af32d8d /scripts/Makefile.thinlto
parent1938d59c05e1a3a7fa894047f09e0a688d0dd4f0 (diff)
downloadlinux-4456c404c6bb2e978769f5f27090deee3457f95c.tar.gz
linux-4456c404c6bb2e978769f5f27090deee3457f95c.zip
perf mutex: Add a robust, process-shared mutex initializer
A mutex held by a process that can die before unlocking it, like the tests forked by 'perf test' that will take turns using the per user budget set in kernel.perf_event_mlock_kb, has to be taken over by the next locker instead of staying locked forever. Robust mutexes, on top of the kernel's robust futexes, do that: when an owner dies while holding it the kernel marks the futex word owner-died and the next pthread_mutex_lock() returns EOWNERDEAD, then mutex_lock() makes it consistent and takes it over; mutex_trylock() and cond_wait() come back with EOWNERDEAD too, so they take it over the same way, with mutex_trylock() giving the mutex back when it can't be taken over: it is held all the same, and a failed trylock must not leak it. Add mutex_init_pshared_robust(), returning false when robust mutexes aren't available: from libcs without the API, gated by a feature check, to musl and glibc refusing them at runtime, when get_robust_list(2) or set_robust_list(2) aren't usable. glibc only sets a flag in pthread_mutexattr_setrobust(), refusing the mutex itself in pthread_mutex_init() with ENOTSUP instead, other errors from it still being reported. Robust mutexes being unavailable isn't an error, just a debug message for whoever then falls back. Reviewed-by: Ian Rogers <irogers@google.com> Tested-by: Ian Rogers <irogers@google.com> Assisted-by: LLM Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions