summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/dllockinit.3
Commit message (Collapse)AuthorAgeFilesLines
* mdoc(7) police: "The .Fa argument.".ru2002-12-191-6/+6
|
* mdoc(7) police: "The .Fn function".ru2002-12-181-6/+6
|
* mdoc(7) police: Use the new .In macro for #include statements.ru2001-10-011-1/+1
|
* mdoc(7) police: removed HISTORY info from the .Os call.ru2001-07-101-1/+1
|
* Use Fx macro wherever possible.ru2000-11-141-1/+2
|
* Whitespace only change: trim trailing whitespace.asmodai2000-10-301-1/+1
|
* Change the dllockinit() interface from "experimental" tojdp2000-07-081-3/+4
| | | | "deprecated" and warn that it will disappear eventually.
* Introduce ".Lb" macro to libc manpages.phantom2000-04-211-0/+2
| | | | More libraries manpages updates following.
* Revive the warning that dllockinit() is experimental and subject tojdp2000-01-291-1/+6
| | | | change.
* Remove the warning that this interface shouldn't be used yet. Fixjdp2000-01-091-8/+4
| | | | a typo. Clarify a sentence.
* Fixed the type of dllockinit() (const unpoisoning).bde2000-01-051-4/+1
| | | | | Use long lines instead of lines split with backslash-newline in synopsis. My synopsis checker doesn't understand backslash-newline.
* Work around an assert failure in the dynamic linker's default threadjdp1999-12-281-0/+4
| | | | | | | | | | | | | | | | 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.
* Add a new function dllockinit() for registering thread lockingjdp1999-12-271-0/+109
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.
OpenPOWER on IntegriCloud