mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-26 13:21:07 +03:00
Update.
1999-12-03 Andreas Jaeger <aj@suse.de> * nss/getXXbyYY.c: Include <resolv.h> (FUNCTION_NAME): Use res_ninit instead of res_init. * nss/getXXbyYY_r.c [NEED__RES]: Include <resolv.h> for _res declaration and prototypes. Remove extra _res declaration. (INTERNAL): Use thread aware res_ninit function. * inet/gethstbyad_r.c: Include <resolv.h>. * resolv/res_data.c: Update from Bind 8.2.2-P5. Moved res_init to res_libc.c. Disabled unneeded functions. * resolv/res_libc.c: New file. * Versions.def: Add version GLIBC_2.2 for libpthread. Add versions GLIBC_2.1 and GLIBC_2.2 for libresolv. * include/resolv.h: Add internal interfaces. * resolv/Makefile (routines): Add new files. (libresolv-routines): Likewise. (distribute): Likewise. * resolv/gethnamaddr.c: Use thread safe resolver functions. * resolv/nss_dns/dns-host.c: Likewise. * resolv/nss_dns/dns-network.c: Likewise. * resolv/arpa/nameser.h: Update from Bind 8.2.2-P5. * resolv/nsap_addr.c: Likewise. * resolv/res_comp.c: Likewise. * resolv/res_debug.c: Likewise. * resolv/res_init.c: Likewise. * resolv/res_mkquery.c: Likewise. * resolv/res_query.c: Likewise. * resolv/res_send.c: Likewise. * resolv/resolv.h: Likewise. * resolv/Versions: Add __res_state and __res_ninit with version GLIBC_2.2 to libc. Add new interfaces with version GLIBC_2.2 to libresolv. * resolv/Banner: Update. * include/arpa/nameser_compat.h: New file. * resolv/ns_name.c: New file from Bind 8.2.2-P5. * resolv/ns_netint.c: Likewise. * resolv/ns_parse.c: Likewise. * resolv/ns_print.c: Likewise. * resolv/ns_samedomain.c: Likewise. * resolv/ns_ttl.c: Likewise. * resolv/arpa/nameser_compat.h: Likewise. * resolv/res_debug.h: Likewise. Some patches are based on work done by Adam D. Bradley <artdodge@cs.bu.edu>. * sysdeps/unix/sysv/linux/configure.in: Remove check for ldconfig, set always use_ldconfig instead.
This commit is contained in:
@ -1,3 +1,18 @@
|
||||
1999-12-03 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* Versions: Add __res_state with version GLIBC_2.2.
|
||||
|
||||
* errno.c (__res_state): New function to return thread specific
|
||||
resolver state.
|
||||
|
||||
* pthread.c (pthread_initialize): Initialize p_resp.
|
||||
(__pthread_reset_main_thread): Also set p_resp.
|
||||
|
||||
* manager.c (pthread_handle_create): Initialize p_resp.
|
||||
|
||||
* internals.h: Add thread specific resolver state.
|
||||
Based on patches by Adam D. Bradley <artdodge@cs.bu.edu>.
|
||||
|
||||
1999-12-01 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* sysdeps/i386/pt-machine.h: Move stack_pointer definition to the
|
||||
|
@ -118,4 +118,7 @@ libpthread {
|
||||
__pthread_kill_other_threads_np;
|
||||
__vfork;
|
||||
}
|
||||
GLIBC_2.2 {
|
||||
__res_state;
|
||||
}
|
||||
}
|
||||
|
@ -30,3 +30,10 @@ int * __h_errno_location()
|
||||
pthread_descr self = thread_self();
|
||||
return THREAD_GETMEM (self, p_h_errnop);
|
||||
}
|
||||
|
||||
/* Return thread specific resolver state. */
|
||||
struct __res_state * __res_state()
|
||||
{
|
||||
pthread_descr self = thread_self();
|
||||
return THREAD_GETMEM (self, p_resp);
|
||||
}
|
||||
|
@ -26,6 +26,9 @@
|
||||
#include <sys/types.h>
|
||||
#include <bits/libc-tsd.h> /* for _LIBC_TSD_KEY_N */
|
||||
|
||||
#include <resolv.h> /* for per-thread resolver context */
|
||||
|
||||
|
||||
#include "pt-machine.h"
|
||||
#include "semaphore.h"
|
||||
#include "../linuxthreads_db/thread_dbP.h"
|
||||
@ -119,9 +122,11 @@ struct _pthread_descr_struct {
|
||||
size_t p_guardsize; /* size of guard area */
|
||||
pthread_descr p_self; /* Pointer to this structure */
|
||||
int p_nr; /* Index of descriptor in __pthread_handles */
|
||||
/* New elements must be added at the end. */
|
||||
int p_report_events; /* Nonzero if events must be reported. */
|
||||
td_eventbuf_t p_eventbuf; /* Data for event. */
|
||||
struct __res_state *p_resp; /* Pointer to resolver state */
|
||||
struct __res_state p_res; /* per-thread resolver state */
|
||||
/* New elements must be added at the end. */
|
||||
} __attribute__ ((aligned(32))); /* We need to align the structure so that
|
||||
doubles are aligned properly. This is 8
|
||||
bytes on MIPS and 16 bytes on MIPS64.
|
||||
|
@ -384,6 +384,7 @@ static int pthread_handle_create(pthread_t *thread, const pthread_attr_t *attr,
|
||||
new_thread->p_canceltype = PTHREAD_CANCEL_DEFERRED;
|
||||
new_thread->p_errnop = &new_thread->p_errno;
|
||||
new_thread->p_h_errnop = &new_thread->p_h_errno;
|
||||
new_thread->p_resp = &new_thread->p_res;
|
||||
new_thread->p_guardaddr = guardaddr;
|
||||
new_thread->p_guardsize = guardsize;
|
||||
new_thread->p_self = new_thread;
|
||||
|
@ -318,6 +318,8 @@ static void pthread_initialize(void)
|
||||
/* The errno/h_errno variable of the main thread are the global ones. */
|
||||
__pthread_initial_thread.p_errnop = &_errno;
|
||||
__pthread_initial_thread.p_h_errnop = &_h_errno;
|
||||
/* Likewise for the resolver state _res. */
|
||||
__pthread_initial_thread.p_resp = &_res;
|
||||
#ifdef __SIGRTMIN
|
||||
/* Initialize real-time signals. */
|
||||
init_rtsigs ();
|
||||
@ -725,6 +727,7 @@ void __pthread_reset_main_thread()
|
||||
/* Now this thread modifies the global variables. */
|
||||
THREAD_SETMEM(self, p_errnop, &_errno);
|
||||
THREAD_SETMEM(self, p_h_errnop, &_h_errno);
|
||||
THREAD_SETMEM(self, p_resp, &_res);
|
||||
}
|
||||
|
||||
/* Process-wide exec() request */
|
||||
|
Reference in New Issue
Block a user