freebsd-nq/lib/libc
Brian Feldman 33dee81933 Make the resolver(3) and many associated interfaces much more reentrant.
The getaddrinfo(3), getipnodebyname(3) and resolver(3) can coincide now
with what should be totally reentrant, and h_errno values will now
be preserved correctly, but this does not affect interfaces such as
gethostbyname(3) which are still mostly non-reentrant.

In all of these relevant functions, the thread-safety has been pushed
down as far as it seems possible right now.  This means that operations
that are selected via nsdispatch(3) (i.e. files, yp, dns) are protected
still under global locks that getaddrinfo(3) defines, but where possible
the locking is greatly reduced.  The most noticeable improvement is
that multiple DNS lookups can now be run at the same time, and this
shows major improvement in performance of DNS-lookup threaded programs,
and solves the "Mozilla tab serialization" problem.

No single-threaded applications need to be recompiled.  Multi-threaded
applications that reference "_res" to change resolver(3) options will
need to be recompiled, and ones which reference "h_errno" will also
if they desire the correct h_errno values.  If the applications already
understood that _res and h_errno were not thread-safe and had their own
locking, they will see no performance improvement but will not
actually break in any way.

Please note that when NSS modules are used, or when nsdispatch(3)
defaults to adding any lookups of its own to the individual libc
_nsdispatch() calls, those MUST be reentrant as well.
2004-02-25 21:03:46 +00:00
..
alpha Fix some aliasing problems. 2004-02-16 10:02:40 +00:00
amd64 Change the syscall stub branch orders so that the static branch prediction 2004-02-22 02:11:39 +00:00
compat-43
db Simplify mpool_get() and mpool_write() by using pread() and pwrite() 2004-01-20 00:40:35 +00:00
gdtoa Updated manh shift constant type to 'ULL' for PPC to fix 2004-01-21 04:51:50 +00:00
gen Apply style(9). 2004-02-23 20:42:03 +00:00
gmon Use ANSI C function definition for _mcount' and remove static' 2004-01-06 18:49:54 +00:00
i386 Remove the code and an associated comment for gcc 1.x compatibility 2004-02-16 10:03:02 +00:00
ia64 Fix some aliasing problems. 2004-02-16 10:02:40 +00:00
include Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
locale LC_ALL not always take priority over other LC_* 2004-01-31 19:15:32 +00:00
net Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
nls
posix1e Adjust for brain outage that affected the previous commit. 2004-01-06 20:29:40 +00:00
powerpc Fix some aliasing problems. 2004-02-16 10:02:40 +00:00
quad
regex
rpc style cleanup: Remove duplicate $FreeBSD$ tags. 2004-02-10 20:40:17 +00:00
sparc64 Fix some aliasing problems. 2004-02-16 10:02:40 +00:00
stdio Document dependence of mktemp(3) on the non-reentrant arc4random(3). 2004-02-20 04:08:28 +00:00
stdlib Add getopt_long_only() from OpenBSD and other OpenBSD cleanups 2004-02-24 08:07:26 +00:00
stdtime
string Translate from GNU C to ISO C. 2004-01-14 07:47:10 +00:00
sys Update the documentation for setpgrp(2) to reflect the access control 2004-02-08 12:38:30 +00:00
uuid Remove stale DCE 1.1 pointers to the IBM site. The URLs aren't valid 2003-08-08 19:18:43 +00:00
xdr When writing/reading longs use explicit 32bit temporary values. 2004-01-24 01:23:30 +00:00
yp
Makefile libc is now WARNS=2 clean with the exception of the gdtoa bits (which 2004-01-19 16:16:53 +00:00