History log of /src/lib/libc/include/reentrant.h |
Revision | | Date | Author | Comments |
1.23 |
| 03-Feb-2025 |
andvar | fix various typos in comments.
|
1.22 |
| 27-Aug-2024 |
riastradh | arc4random(3): Add automatic tests.
This verifies that: - arc4random zeroes its state and reseeds itself on fork - arc4random reseeds itself on entropy consolidation (e.g., VM clone) - arc4random falls back to global state if it can't allocate local state because address space limits cause mmap to fail
NOTE: This adds a new libc symbol __arc4random_global, but it's in the reserved namespace and only used by t_arc4random, so no libc minor bump.
PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
|
1.21 |
| 08-Dec-2021 |
andvar | branches: 1.21.2; 1.21.4; s/efficent/efficient/ in comments.
|
1.20 |
| 08-Feb-2017 |
christos | empty to nothing
|
1.19 |
| 08-Feb-2017 |
christos | __empty is defined in <sys/cdefs.h>
|
1.18 |
| 20-Jan-2015 |
christos | branches: 1.18.2; 1.18.4; Fix non _REENTRANT build.
|
1.17 |
| 12-Apr-2013 |
joerg | Mark __libc_thr_exit_stub as dead.
|
1.16 |
| 21-Mar-2013 |
christos | - Allow libpthread to be dlopened again, by providing libc stubs to libpthread. - Fail if the dlopened libpthread does pthread_create(). From manu@ - Discussed at length in the mailing lists; approved by core@ - This was chosen as the least intrusive patch that will provide the necessary functionality. XXX: pullup to 6
|
1.15 |
| 03-Jun-2012 |
joerg | branches: 1.15.2; Provide a usable thr_once for !_REENTRANT
|
1.14 |
| 11-Jan-2009 |
christos | branches: 1.14.8; 1.14.10; merge christos-time_t
|
1.13 |
| 28-Apr-2008 |
martin | branches: 1.13.8; Remove clause 3 and 4 from TNF licenses
|
1.12 |
| 04-Feb-2008 |
rtr | branches: 1.12.4; fix comment Abtract -> Abstract
|
1.11 |
| 27-Nov-2007 |
ad | Add thr_curcpu(), pthread_curcpu_np().
|
1.10 |
| 14-Dec-2004 |
nathanw | branches: 1.10.16; Nuke threadlib.h. Library defensive threading is now provided through the normal pthread.h interface. Move stubs for libc back into a libc-internal header.
|
1.9 |
| 18-Jul-2003 |
nathanw | Adapt definition of FLOCKFILE()/FUNLOCKFILE() to new __flockfile_internal() routines.
|
1.8 |
| 19-Jan-2003 |
thorpej | Use <threadlib.h>.
|
1.7 |
| 18-Jan-2003 |
thorpej | Merge the nathanw_sa branch.
|
1.6 |
| 02-Jun-2000 |
fvdl | branches: 1.6.4; Add new RPC code, based on Sun's TI-RPC code. Adapted to not use XTI, but sockets instead, internally. Old, backward compatible interfaces maintained.
|
1.5 |
| 14-Sep-1998 |
kleink | branches: 1.5.8; Add wrappers around mutex and rwlock run-time initialization.
|
1.4 |
| 27-Jul-1998 |
mycroft | Delint.
|
1.3 |
| 22-Jan-1998 |
jtc | Add support for multiple reader-single writer locks which will be used in stdio. Although there is no POSIX.1 lock of this type, XPG 4.2 has specified one that is suitable for our purposes and that we'll have to implement anyway.
|
1.2 |
| 19-Jan-1998 |
jtc | Add FLOCKFILE() and FUNLOCKFILE() macro definitions to be used in making stdio thread-safe.
|
1.1 |
| 16-Jan-1998 |
jtc | Header file which describes mechanism that will be used by libc for thread safety of library internals.
|
1.5.8.1 |
| 23-Jun-2000 |
minoura | Import of most recent XPG4DL dated 2000.06.23.
|
1.6.4.9 |
| 14-Jan-2003 |
thorpej | Explicitly include <signal.h>.
|
1.6.4.8 |
| 08-Jan-2003 |
nathanw | Oh, duh, and use real rwlocks, too.
(And to think that I just got new glasses)
|
1.6.4.7 |
| 08-Jan-2003 |
nathanw | Now that we're using real rwlocks instead of mutexes, use PTHREAD_RWLOCK_INITIALIZER instead of PTHREAD_MUTEX_INITIALIZER.
|
1.6.4.6 |
| 08-Jan-2003 |
thorpej | Rewrite the way libpthread provides thread primitives to libc, using strong and weak aliases (the way cancelation points are handled).
Work around lame Unix static library semantics which could cause the wrong thread primitives or cancelation point functions to be included in a statically-linked program.
THIS IS AN ABI CHANGE. People running the nathanw_sa branch should ensure that their libc and libpthread are in sync after updating.
|
1.6.4.5 |
| 02-May-2002 |
nathanw | Adapt to new dispatch-vector thread interface.
|
1.6.4.4 |
| 25-Mar-2002 |
nathanw | Bind libc's pthread desires to _libc_pthread_*, rather than pthread_*, to prevent accidental use of pthread libraries that aren't actually integrated with libc.
|
1.6.4.3 |
| 06-Feb-2002 |
nathanw | Add a COND_INITIALIZER and a thr_t definition.
Shuffle the arguments of the cond_init() macro to make a little more sense.
|
1.6.4.2 |
| 30-Dec-2001 |
nathanw | Define thr_errno() to be pthread__errno() when _REENTRANT is defined. (This entire layer of #defines is silly.)
|
1.6.4.1 |
| 08-Aug-2001 |
nathanw | _REENT -> _REENTRANT Add wrappers for pthread_once and friends. Use mutexes as the poor man's rwlocks for the moment.
|
1.10.16.2 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.10.16.1 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.12.4.1 |
| 18-May-2008 |
yamt | sync with head.
|
1.13.8.2 |
| 05-Jan-2009 |
christos | don't expose __libc_cond_timedwait in compat code.
|
1.13.8.1 |
| 28-Apr-2008 |
christos | file reentrant.h was added on branch christos-time_t on 2009-01-05 01:53:48 +0000
|
1.14.10.2 |
| 29-Apr-2013 |
riz | Pull up following revision(s) (requested by manu in ticket #869): lib/libpthread/pthread_rwlock.c: revision 1.33 lib/libc/include/reentrant.h: revision 1.16 lib/libpthread/pthread_cond.c: revision 1.59 lib/libpthread/pthread_misc.c: revision 1.15 lib/libc/thread-stub/thread-stub.c: revision 1.23 lib/libpthread/pthread_cancelstub.c: revision 1.38 lib/libpthread/pthread_specific.c: revision 1.26 lib/libpthread/pthread_mutex.c: revision 1.56 lib/libpthread/pthread_tsd.c: revision 1.11 lib/libpthread/Makefile: revision 1.80 lib/libpthread/pthread.c: revision 1.143 lib/libpthread/pthread_int.h: revision 1.89 - Allow libpthread to be dlopened again, by providing libc stubs to libpthread. - Fail if the dlopened libpthread does pthread_create(). From manu@ - Discussed at length in the mailing lists; approved by core@ - This was chosen as the least intrusive patch that will provide the necessary functionality. XXX: pullup to 6
|
1.14.10.1 |
| 23-Jun-2012 |
riz | Pull up following revision(s) (requested by joerg in ticket #328): lib/libc/gen/devname.c: revision 1.22 distrib/sparc64/instfs/dot.profile: revision 1.7 distrib/i386/cdroms/install.sh: revision 1.3 tests/lib/libcurses/director/director.c: revision 1.10 lib/libc/include/reentrant.h: revision 1.15 distrib/amd64/cdroms/install.sh: revision 1.3 tests/include/t_paths.c: revision 1.12 share/man/man7/hier.7: revision 1.101 etc/rc.d/sysdb: revision 1.24 include/stdlib.h: revision 1.99 tests/lib/libcurses/Makefile: revision 1.3 distrib/sparc64/cdroms/installcd/install.sh: revision 1.3 distrib/i386/cdroms/Makefile.cdrom: revision 1.27 lib/libc/gen/ttyname.c: revision 1.25 usr.bin/tic/Makefile: revision 1.2 tools/compat/Makefile: revision 1.57 lib/libterminfo/compile.c: revision 1.7 lib/libc/gen/ttyname.c: revision 1.26 lib/libterminfo/compile.c: revision 1.8 tools/compat/Makefile: revision 1.59 tools/compat/cdbw.h: revision 1.1 distrib/i386/installimage/install.sh: revision 1.2 lib/libc/include/namespace.h: revision 1.154 usr.bin/tic/tic.c: revision 1.13 usr.bin/tic/tic.c: revision 1.14 usr.bin/tic/tic.c: revision 1.15 distrib/sets/lists/base/mi: revision 1.996 usr.bin/tic/tic.c: revision 1.16 usr.sbin/dev_mkdb/dev_mkdb.8: revision 1.13 usr.bin/tic/tic.c: revision 1.17 usr.bin/tic/tic.c: revision 1.18 tools/compat/cdbr.h: revision 1.1 distrib/sparc64/instfs/list: revision 1.25 usr.bin/tic/tic.c: revision 1.19 lib/libc/cdb/cdbw.c: revision 1.4 lib/libc/cdb/cdbw.3: revision 1.4 lib/libc/cdb/cdbw.3: revision 1.5 share/terminfo/Makefile: revision 1.3 usr.sbin/dev_mkdb/dev_mkdb.c: revision 1.29 usr.sbin/dev_mkdb/Makefile: revision 1.8 lib/libc/gen/ttyname.3: revision 1.23 lib/libc/gen/ttyname.3: revision 1.24 lib/libc/cdb/cdbr.c: revision 1.3 include/cdbw.h: revision 1.2 distrib/sparc64/cdroms/installcd/Makefile: revision 1.15 lib/libc/gen/devname.3: revision 1.12 tools/compat/compat_defs.h: revision 1.85 tools/compat/compat_defs.h: revision 1.86 lib/libterminfo/term_private.h: revision 1.10 lib/libterminfo/term.c: revision 1.14 usr.bin/tic/tic.1: revision 1.10 lib/libterminfo/term.c: revision 1.15 lib/libterminfo/Makefile.hash: revision 1.5 lib/libterminfo/term.c: revision 1.16 distrib/amd64/installimage/install.sh: revision 1.2 share/man/man5/rc.conf.5: revision 1.152 distrib/sets/lists/tests/mi: revision 1.472 distrib/amd64/cdroms/Makefile.cdrom: revision 1.7 include/paths.h: revision 1.41 bin/ps/ps.1: revision 1.101 lib/libterminfo/terminfo.5.in: revision 1.16 usr.bin/tic/tic.c: revision 1.20 lib/libterminfo/terminfo.5.in: revision 1.17 Prefer __printflike. Use queue(3) Replace linear lookup with hash table, reducing runtime by 60%. Use e* from util.h. One more strdup -> estrdup. Maintain nalias and nterm on the fly. Add void for ttyslot prototype. Use memcmp in place of strncmp, since length is known to no longer than either of the arguments. Fix a number of memory leaks. Keep final loop of the cleanup in tic(1) under #ifdef __VALGRIND__ though. Add __predict_true / __predict_false definitions. Add a special seeder for cdbw_output that gives stable results. Hook up cdbw(3) for the tool build. Prototype for cdbw_stable_seeder. Provide a usable thr_once for !_REENTRANT Switch device database to cdb(5). Rework ttyname(3) and ttyname_r(3) to depend on new devname_r(3) as heart. Add /dev/pts magic directly to devname(3). While it can lead to returning non-existing paths, the behavior is more consistent that way. Drop caching layer in devname(3), it doesn't buy anything for the common case of having access to the database. Teach devname(3) proper fallback behavior of scanning /dev. Create both old-style and new-style database for now in /etc/rc.d/sysdb. Switch terminfo(3) to cdb(5). Fix typos. Make Alan Barrett happy and add (). Add cdbr(3) support to tools/compat. Bump date for previous. Relax consistency to make it possible to match valid entries. Prefix devname's buffer with /dev/ as ttyname is supposed to return the full path. Reported by Dave Huang.
|
1.14.8.2 |
| 22-May-2014 |
yamt | sync with head.
for a reference, the tree before this commit was tagged as yamt-pagecache-tag8.
this commit was splitted into small chunks to avoid a limitation of cvs. ("Protocol error: too many arguments")
|
1.14.8.1 |
| 30-Oct-2012 |
yamt | sync with head
|
1.15.2.1 |
| 23-Jun-2013 |
tls | resync from head
|
1.18.4.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.18.2.1 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.21.4.1 |
| 02-Aug-2025 |
perseant | Sync with HEAD
|
1.21.2.1 |
| 09-Oct-2024 |
martin | Pull up following revision(s) (requested by riastradh in ticket #939):
distrib/sets/lists/debug/module.md.amd64: revision 1.18 sys/modules/Makefile: revision 1.292 lib/libc/gen/arc4random.c: revision 1.34 lib/libc/gen/arc4random.c: revision 1.35 lib/libc/gen/arc4random.c: revision 1.36 lib/libc/gen/arc4random.c: revision 1.37 sys/kern/kern_entropy.c: revision 1.70 lib/libc/gen/arc4random.c: revision 1.38 sys/kern/kern_entropy.c: revision 1.71 lib/libc/gen/getentropy.3: revision 1.8 distrib/sets/lists/modules/md.amd64: revision 1.103 share/man/man4/rnd.4: revision 1.42 share/man/man4/rnd.4: revision 1.44 lib/libc/include/arc4random.h: revision 1.1 distrib/sets/lists/man/mi: revision 1.1786 sys/arch/i386/conf/GENERIC: revision 1.1258 sys/modules/acpivmgenid/acpivmgenid.ioconf: revision 1.1 sys/arch/amd64/conf/ALL: revision 1.190 distrib/sets/lists/debug/mi: revision 1.446 sys/arch/i386/conf/ALL: revision 1.521 lib/libc/gen/Makefile.inc: revision 1.219 distrib/sets/lists/debug/module.md.i386: revision 1.12 sys/dev/acpi/acpi_vmgenid.c: revision 1.1 sys/dev/acpi/acpi_vmgenid.c: revision 1.2 lib/libc/include/reentrant.h: revision 1.22 sys/arch/evbarm/conf/GENERIC64: revision 1.219 share/man/man4/Makefile: revision 1.735 distrib/sets/lists/modules/md.i386: revision 1.100 distrib/sets/lists/tests/mi: revision 1.1334 lib/libc/gen/arc4random.3: revision 1.22 sys/dev/acpi/files.acpi: revision 1.133 lib/libc/gen/arc4random.3: revision 1.23 tests/lib/libc/gen/t_arc4random.c: revision 1.1 sys/sys/entropy.h: revision 1.6 sys/arch/amd64/conf/GENERIC: revision 1.614 sys/modules/acpivmgenid/Makefile: revision 1.1 share/man/man4/acpivmgenid.4: revision 1.1 lib/libc/gen/Makefile.inc: revision 1.220 tests/lib/libc/gen/Makefile: revision 1.56 share/man/man4/acpivmgenid.4: revision 1.2 share/man/man4/acpivmgenid.4: revision 1.3
(all via patch)
Catch up with all the lint warnings since exit on warning was disabled.
Disable 'missing header declaration' and 'nested extern' warnings for now. acpivmgenid(4): New driver for virtual machine generation ID.
Added to amd64/ALL and i386/ALL kernel configurations, and made available as a loadable module acpivmgenid.kmod on x86, for now. TBD: Add to all ACPI-supporting GENERIC kernels. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
entropy(9): Factor out subroutines to reset and gather entropy. `Reset' means we keep the data in the pool, but assume it had zero entropy. `Gather' means we request samples from all on-demand sources and wait for the synchronous ones to complete.
No functional change intended, other than to expose new symbols -- just preparation to expose these to acpivmgenid(4), so it can use these when the VM host notifies us that we, the guest, have been cloned. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
acpivmgenid(4): Reset and gather entropy on VM clone notification. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
arc4random(3): Reseed if system entropy epoch changes. This can happen, for example, if the system is a VM instance, and the VM is cloned.
This incurs the cost of a system call on every arc4random call, which is unfortunate, but 1. we don't currently have a (machine-independent) mechanism for exposing a read-only page to userland shared by the kernel to enable a cheaper access path to the entropy epoch; and 2. the algorithm here -- a simple application of ChaCha -- is likely also a bottleneck and could be much cheaper by (a) using sys/crypto/chacha for machine-dependent vectorized ChaCha code, and (b) filling a buffer (somewhere between a cipher block and a page) in a batch at a time, instead of running ChaCha to generate only 32 bytes at a time. So although this might be a performance hit, the security benefit is worthwhile and we have a clear path to do better than reversing the performance hit later. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
acpivmgenid(4): Nix BUGS that have been squashed. Reference kern.entropy.epoch for the remaining bug (which is a performance issue, not a security issue). PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
entropy(9): Allow unprivileged reads of sysctl kern.entropy.epoch.
Applications need this in order to know when to reseed. (We should also expose it through a page shared read-only with userland for cheaper access, but until we do, let's let applications get at it through sysctl.) PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
arc4random.c: Fix test program.
This isn't wired up anywhere, but let's reduce the bitrot. It was helpful in reminding me that kern.entropy.epoch was, for reasons I can't remember, restricted to privileged access. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
amd64, evbarm, i386: Add acpivmgenid(4) to GENERIC. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
rnd(4): Document kern.entropy.epoch is unprivileged and elaborate. Cross-reference acpivmgenid(4). PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
arc4random(3): Note that arc4random respects kern.entropy.epoch. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork Add debug info for new acpivmgenid module
arc4random(3): Add automatic tests.
This verifies that: - arc4random zeroes its state and reseeds itself on fork - arc4random reseeds itself on entropy consolidation (e.g., VM clone) - arc4random falls back to global state if it can't allocate local state because address space limits cause mmap to fail
NOTE: This adds a new libc symbol __arc4random_global, but it's in the reserved namespace and only used by t_arc4random, so no libc minor bump. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
getentropy(3): Note intent to reseed on VM clone, and caveats.
Tidy markup and pacify some mandoc -Tlint complaints while here. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
Bump dates on man pages recently updated to mention VM clones. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
arc4random(3): Pacify some of lint's complaints. PR kern/58632: getentropy(2) and arc4random(3) do not reseed on VM fork
arc4random: suppress another lint warning
|