History log of /freebsd-9.3-release/lib/libc/gen/dllockinit.3
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 267654 19-Jun-2014 gjb

Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 225736 22-Sep-2011 kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by: re (implicit)


# 206622 14-Apr-2010 uqs

mdoc: order prologue macros consistently by Dd/Dt/Os

Although groff_mdoc(7) gives another impression, this is the ordering
most widely used and also required by mdocml/mandoc.

Reviewed by: ru
Approved by: philip, ed (mentors)


# 131504 02-Jul-2004 ru

Mechanically kill hard sentence breaks.


# 108087 19-Dec-2002 ru

mdoc(7) police: "The .Fa argument.".


# 108030 18-Dec-2002 ru

mdoc(7) police: "The .Fn function".


# 84306 01-Oct-2001 ru

mdoc(7) police: Use the new .In macro for #include statements.


# 79531 10-Jul-2001 ru

mdoc(7) police: removed HISTORY info from the .Os call.


# 68716 14-Nov-2000 ru

Use Fx macro wherever possible.


# 67967 30-Oct-2000 asmodai

Whitespace only change: trim trailing whitespace.


# 62802 08-Jul-2000 jdp

Change the dllockinit() interface from "experimental" to
"deprecated" and warn that it will disappear eventually.


# 59460 21-Apr-2000 phantom

Introduce ".Lb" macro to libc manpages.

More libraries manpages updates following.


# 56781 28-Jan-2000 jdp

Revive the warning that dllockinit() is experimental and subject to
change.


# 55685 09-Jan-2000 jdp

Remove the warning that this interface shouldn't be used yet. Fix
a typo. Clarify a sentence.


# 55475 05-Jan-2000 bde

Fixed the type of dllockinit() (const unpoisoning).

Use long lines instead of lines split with backslash-newline in synopsis.
My synopsis checker doesn't understand backslash-newline.


# 55165 28-Dec-1999 jdp

Work around an assert failure in the dynamic linker's default thread
locking functions. If an application loads a shared object with
dlopen() and the shared object has an init function which requires
lazy binding, then _rtld_bind is called when the thread is already
inside the dynamic linker. This leads to a recursive acquisition
of the lock, which I was not expecting -- hence the assert failure.

This work-around makes the default locking functions handle recursive
locking. It is NOT the correct fix -- that should be implemented
at the generic locking level rather than in the default locking
functions. I will implement the correct fix in a future commit.

Since the dllockinit() interface will likely need to change, warn
about that in both the man page and the header file.


# 55122 27-Dec-1999 jdp

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.