freebsd-nq/lib/libc/gen
John Polstra d3980376e8 Add a new function dllockinit() for registering thread locking
functions to be used by the dynamic linker.  This can be called by
threads packages at start-up time.  I will add the call to libc_r
soon.

Also add a default locking method that is used up until dllockinit()
is called.  The default method works by blocking SIGVTALRM, SIGPROF,
and SIGALRM in critical sections.  It is based on the observation
that most user-space threads packages implement thread preemption
with one of these signals (usually SIGVTALRM).

The dynamic linker has never been reentrant, but it became less
reentrant in revision 1.34 of "src/libexec/rtld-elf/rtld.c".
Starting with that revision, multiple threads each doing lazy
binding could interfere with each other.  The usual symptom was
that a symbol was falsely reported as undefined at start-up time.
It was rare but not unseen.  This commit fixes it.
1999-12-27 04:44:04 +00:00
..
__xuname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
_rand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
_spinlock_stub.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
alarm.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
alarm.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
arc4random.3 mdoc(7)'fy 1999-10-30 15:12:25 +00:00
arc4random.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
assert.c Don't include <sys/types.h> when it isn't used. 1996-04-19 18:40:25 +00:00
clock.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
clock.c Change CLK_TCK to CLOCKS_PER_SEC. (CLK_TCK is a deprecated POSIX feature 1995-02-03 21:59:45 +00:00
closedir.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
confstr.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
confstr.c Minor cleanup, mostly unused vars and missing #includes. 1995-10-22 14:37:11 +00:00
crypt.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
crypt.c $Header$ -> $FreeBSD$ 1999-08-28 05:11:36 +00:00
ctermid.3 Provide and document ctermid_r function. 1999-11-28 23:28:49 +00:00
ctermid.c Provide and document ctermid_r function. 1999-11-28 23:28:49 +00:00
daemon.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
daemon.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
devname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
devname.c Make devname(3) return something more intelligent than NULL if it doesn't 1999-07-18 10:19:48 +00:00
directory.3 Provide a man page for Alfreds lovely readdir_r function. Also 1999-11-29 06:12:22 +00:00
disklabel.c Add unsigned char cast to isdigit 1999-11-04 04:46:18 +00:00
dladdr.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
dlfcn.c Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
dllockinit.3 Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
dlopen.3 It is no longer necessary to prepend underscores to external symbols under 1999-11-02 18:18:26 +00:00
drand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
erand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
err.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
err.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
errlst.c Add missing strings. 1999-04-24 18:28:24 +00:00
exec.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
exec.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
fnmatch.3 mdoc(7)'fy 1999-10-30 15:12:25 +00:00
fnmatch.c Style optimization in newly added POSIX range []] conformance, redo 1997-06-07 01:33:10 +00:00
frexp.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
fstab.c Fix the fixfsfile() so that it works for both block and character devices 1999-12-23 14:44:36 +00:00
ftok.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
ftok.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
fts-compat.c Switch over to the OpenBSD fts.c, fixing lots of things. 1999-12-18 04:36:14 +00:00
fts-compat.h Back out all of yesterdays include file changes. 1997-05-07 20:01:10 +00:00
fts.3 fts_pathlen and fts_namelen are u_short, not short 1999-11-15 03:29:19 +00:00
fts.c Switch over to the OpenBSD fts.c, fixing lots of things. 1999-12-18 04:36:14 +00:00
getbootfile.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getbootfile.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getbsize.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getbsize.c Fixed printf format errors. 1998-08-02 14:41:34 +00:00
getcap.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getcap.c Add unsigned char cast to isspace arg 1999-11-04 04:16:28 +00:00
getcwd.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getcwd.c Explicitly use sigemptyset to clear a sigset_t. Explicit 1999-09-28 13:24:13 +00:00
getdiskbyname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getdomainname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getdomainname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getfsent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getgrent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getgrent.c Replace memory leaking instances of realloc with non-leaking reallocf. 1998-09-16 04:17:47 +00:00
getgrouplist.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getgrouplist.c Fixed merging error. Lite2 fixed premature failure and didn't 1997-03-12 14:54:22 +00:00
gethostname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
gethostname.c gethostname() returns int, not long. Answered my own question by 1996-12-05 18:14:56 +00:00
getloadavg.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getloadavg.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
getlogin.c Provide the getlogin_r function. 1999-11-28 22:41:38 +00:00
getmntinfo.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getmntinfo.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
getnetgrent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getnetgrent.c Add unsigned char cast to isspace arg 1999-11-04 04:16:28 +00:00
getobjformat.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getobjformat.c Initialize a var to quiet -Wall. 1999-12-18 04:47:43 +00:00
getosreldate.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getpagesize.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getpagesize.c Cache the result of getpagesize() so we only make one syscall. 1996-05-02 08:43:05 +00:00
getpass.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getpass.c Do signal handlig he Posix way 1998-02-10 20:05:15 +00:00
getpwent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getpwent.c YP/NIS code: remove unnecessary endgrent() calls which can cause fail on 1999-10-16 12:31:49 +00:00
getttyent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getttyent.c Add unsigned char cast to isspace arg 1999-11-04 04:16:28 +00:00
getusershell.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getusershell.c Add unsigned char cast to isspace arg 1999-11-04 04:16:28 +00:00
getvfsbyname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getvfsbyname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getvfsent.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
getvfsent.c vfsload maps into kldload only now, no more fork/exec of modload(8). 1999-04-19 14:28:45 +00:00
glob.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
glob.c NetBSD kernels don't have issetugid(), so #ifdef this out when 1998-02-20 07:54:56 +00:00
initgroups.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
initgroups.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
isatty.c Implement compile time debug mode for thread locks. 1998-06-09 08:32:23 +00:00
isinf.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
jrand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
lcong48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
ldexp.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
lockf.3 Remove useless section. 1999-11-09 00:28:34 +00:00
lockf.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
lrand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
Makefile.inc Add a new function dllockinit() for registering thread locking 1999-12-27 04:44:04 +00:00
modf.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
mrand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
msgctl.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
msgctl.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
msgget.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
msgget.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
msgrcv.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
msgrcv.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
msgsnd.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
msgsnd.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
nice.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
nice.c Remove extern int errno and #include <errno.h> to get the proper definition. 1998-05-05 22:04:13 +00:00
nlist.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
nlist.c Handle ELF symbols better. This fixes "vmstat -i" for the case 1998-10-28 06:37:49 +00:00
nrand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
ntp_gettime.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
opendir.c Replace memory leaking instances of realloc with non-leaking reallocf. 1998-09-16 04:17:47 +00:00
pause.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
pause.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
popen.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
popen.c Conform to POSIX and close any copies of popen() descriptors inherited by a 1998-10-15 01:47:40 +00:00
psignal.3 Fixed wrong prototype and missing include for strsignal(3). strsignal() 1999-12-23 16:29:58 +00:00
psignal.c The man page implies that the string argument to psignal() may be 1998-10-29 11:39:39 +00:00
pw_scan.c Replace the -q option to pwd_mkdb with a test for PW_SCAN_BIG_IDS in 1999-12-02 16:39:15 +00:00
pw_scan.h Add to pwd_mkdb a -q option to silence warnings about large IDs. Add a 1999-11-15 16:45:37 +00:00
pwcache.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
pwcache.c Honor the nouser/nogroup flag when determing if NULL should 1997-04-03 01:51:34 +00:00
raise.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
raise.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
rand48.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
rand48.h Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
readdir.c style fixes, remove extra braces. 1999-11-29 19:12:50 +00:00
rewinddir.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
scandir.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
scandir.c Fix a memory leak 1998-10-07 01:30:02 +00:00
seed48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
seekdir.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
semconfig.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
semctl.c Fix this so that it compiles in the !__STDC__ case. 1998-06-06 18:52:43 +00:00
semget.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
semop.c Added SYSV ipc system calls. 1994-09-13 14:52:45 +00:00
setdomainname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
setflags.c Fix a bug where a pointer would be one character too far after putting 1999-12-21 10:17:36 +00:00
setflagsbyname.c Fix a bug where a pointer would be one character too far after putting 1999-12-21 10:17:36 +00:00
sethostname.c sethostname() returns int, not long. I could get used to having this 1996-12-05 18:27:20 +00:00
setjmp.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
setjmperr.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
setmode.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
setmode.c Add unsigned char cast to isdigit 1999-11-04 04:46:18 +00:00
setproctitle.3 Make setproctitle(NULL) restore all of the original arguments 1999-11-17 21:12:17 +00:00
setproctitle.c Make setproctitle(NULL) restore all of the original arguments 1999-11-17 21:12:17 +00:00
shmat.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
shmctl.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
shmdt.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
shmget.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
siginterrupt.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
siginterrupt.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
siglist.c Add a strsignal(3) (like strerror(3)) for libc compatability with other 1999-05-18 04:48:58 +00:00
signal.3 - add reference to siginterrupt(3) 1999-09-06 15:15:51 +00:00
signal.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
sigsetops.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
sigsetops.c o Add $FreeBSD$ as a rcsid instead of in a comment 1999-10-02 19:37:14 +00:00
sleep.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
sleep.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
srand48.c Added *ran48 functions, and put them in the correct place this time. 1994-09-23 00:37:55 +00:00
stringlist.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
stringlist.c Replace memory leaking instances of realloc with non-leaking reallocf. 1998-09-16 04:17:47 +00:00
strtofflags.c Fix a bug where a pointer would be one character too far after putting 1999-12-21 10:17:36 +00:00
sysconf.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
sysconf.c Add a trivial mechanism for returning a useful default value if one is 1998-06-01 20:58:03 +00:00
sysctl.3 Separate some common sysctl code into sysctl_find_oid() and calling 1999-12-01 02:25:19 +00:00
sysctl.c Make the implementation and documentation agree. Specifically: 1999-01-06 18:11:53 +00:00
sysctlbyname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
syslog.3 "S" comes before "U"... 1999-10-25 03:51:01 +00:00
syslog.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
tcgetpgrp.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
tcsendbreak.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
tcsetattr.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
tcsetpgrp.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
telldir.c Remove trailing whitespace. 1995-05-30 05:51:47 +00:00
termios.c Back out one of my previous changes: don't clear PARODD, 1996-03-28 13:33:18 +00:00
time.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
time.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
times.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
times.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
timezone.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
timezone.c Eliminate sprintf 1998-01-21 21:46:36 +00:00
ttyname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
ttyname.c Implement compile time debug mode for thread locks. 1998-06-09 08:32:23 +00:00
ttyslot.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
tzset.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
ualarm.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
ualarm.c Remove trailing whitespace. 1995-05-30 05:51:47 +00:00
uname.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
uname.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
unvis.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
unvis.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
usleep.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
usleep.c $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
utime.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
utime.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
valloc.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
valloc.c Fix a cast from a pointer to a long instead of an int which was enough 1998-01-24 20:57:38 +00:00
vis.3 $Id$ -> $FreeBSD$ 1999-08-28 00:22:10 +00:00
vis.c General -Wall warning cleanup, part I. 1996-07-12 18:57:58 +00:00
wait3.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
wait.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00
waitpid.c BSD 4.4 Lite Lib Sources 1994-05-27 05:00:24 +00:00