opnsense-src/lib/libc/stdlib
Dag-Erling Smørgrav 1dc3abb052 libc: Rewrite quick_exit() and at_quick_exit() using C11 atomics.
Compiler memory barriers do not prevent the CPU from executing the code
out of order.  Switch to C11 atomics.  This also lets us get rid of the
mutex; instead, loop until the compare_exchange succeeds.

While here, change the return value of at_quick_exit() on failure to
the more traditional -1, matching atexit().

Sponsored by:	Klara, Inc.
Reviewed by:	Olivier Certner, kevans, kib
Differential Revision:	https://reviews.freebsd.org/D41936
2023-09-26 22:07:10 +02:00
..
malloc libc: add LIBC_MALLOC option 2023-09-01 17:54:23 +01:00
_Exit.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
a64l.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
a64l.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
abort.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
abort.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
abs.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
abs.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
alloca.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
at_quick_exit.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
atexit.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
atexit.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
atexit.h Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
atof.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
atof.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
atoi.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
atoi.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
atol.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
atol.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
atoll.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
bsearch.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
bsearch.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
bsearch_b.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
cxa_thread_atexit.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
cxa_thread_atexit_impl.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
div.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
div.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
exit.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
exit.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
getenv.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
getenv.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
getopt.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
getopt.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
getopt_long.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
getopt_long.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
getsubopt.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
getsubopt.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
hcreate.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
hcreate.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
hcreate_r.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
hdestroy_r.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
heapsort.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
heapsort_b.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
hsearch.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
hsearch_r.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
imaxabs.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
imaxabs.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
imaxdiv.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
imaxdiv.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
insque.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
insque.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
l64a.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
labs.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
labs.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
ldiv.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
ldiv.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
llabs.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
llabs.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
lldiv.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
lldiv.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
lsearch.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
lsearch.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
Makefile.inc libc: regoranize malloc build 2023-08-16 19:16:51 +01:00
memory.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
merge.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
mergesort_b.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ptsname.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
ptsname.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
qsort.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
qsort.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
qsort_r.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
qsort_r_compat.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
qsort_s.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
quick_exit.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
quick_exit.c libc: Rewrite quick_exit() and at_quick_exit() using C11 atomics. 2023-09-26 22:07:10 +02:00
radixsort.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
radixsort.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
rand.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
rand.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
random.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
random.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
random.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
reallocarray.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
reallocarray.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
reallocf.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
reallocf.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
realpath.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
realpath.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
remque.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
set_constraint_handler_s.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
set_constraint_handler_s.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
strfmon.3 Remove $FreeBSD$: two-line nroff pattern 2023-08-16 11:55:10 -06:00
strfmon.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
strtod.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
strtoimax.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtol.3 libc: Document support for binary integers. 2023-08-28 15:34:17 +00:00
strtol.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtold.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
strtoll.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtonum.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
strtonum.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
strtoq.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
strtoul.3 libc: Document support for binary integers. 2023-08-28 15:34:17 +00:00
strtoul.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtoull.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtoumax.c libc: Implement N2630. 2023-08-28 15:33:51 +00:00
strtouq.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
Symbol.map Remove $FreeBSD$: one-line .h pattern 2023-08-16 11:54:23 -06:00
system.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
system.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
tdelete.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
tfind.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
tsearch.3 Remove $FreeBSD$: one-line nroff pattern 2023-08-16 11:55:15 -06:00
tsearch.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
tsearch_path.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
twalk.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00