diff --git a/lib/libc/net/getaddrinfo.c b/lib/libc/net/getaddrinfo.c index e960743fb895..cbdbcf0b2441 100644 --- a/lib/libc/net/getaddrinfo.c +++ b/lib/libc/net/getaddrinfo.c @@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$"); #include "namespace.h" +#include "reentrant.h" #include #include #include @@ -84,7 +85,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -287,16 +287,12 @@ static int res_querydomainN(const char *, const char *, struct res_target *); /* - * XXX: Many dependencies are not thread-safe. So, we share lock between - * getaddrinfo() and getipnodeby*(). Still, we cannot use - * getaddrinfo() and getipnodeby*() in conjunction with other - * functions which call them. + * XXX: Many dependencies are not thread-safe. Still, we cannot use + * getaddrinfo() in conjunction with other functions which call them. */ -pthread_mutex_t __getaddrinfo_thread_lock = PTHREAD_MUTEX_INITIALIZER; -#define THREAD_LOCK() \ - if (__isthreaded) _pthread_mutex_lock(&__getaddrinfo_thread_lock); -#define THREAD_UNLOCK() \ - if (__isthreaded) _pthread_mutex_unlock(&__getaddrinfo_thread_lock); +static mutex_t _getaddrinfo_thread_lock = MUTEX_INITIALIZER; +#define THREAD_LOCK() mutex_lock(&_getaddrinfo_thread_lock); +#define THREAD_UNLOCK() mutex_unlock(&_getaddrinfo_thread_lock); /* XXX macros that make external reference is BAD. */ diff --git a/lib/libc/net/name6.c b/lib/libc/net/name6.c index 425ee25751b6..f00ce267c27a 100644 --- a/lib/libc/net/name6.c +++ b/lib/libc/net/name6.c @@ -87,16 +87,11 @@ * Atsushi Onoe */ -/* - * TODO for thread safe - * use mutex for _hostconf, _hostconf_init. - * rewrite resolvers to be thread safe - */ - #include __FBSDID("$FreeBSD$"); #include "namespace.h" +#include "reentrant.h" #include #include #include @@ -121,7 +116,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include "un-namespace.h" @@ -238,17 +232,12 @@ static int _icmp_ghbyaddr(void *, void *, va_list); #endif /* ICMPNL */ /* - * XXX: Many dependencies are not thread-safe. So, we share lock between - * getaddrinfo() and getipnodeby*(). Still, we cannot use - * getaddrinfo() and getipnodeby*() in conjunction with other - * functions which call them. + * XXX: Many dependencies are not thread-safe. Still, we cannot use + * getipnodeby*() in conjunction with other functions which call them. */ -#include "libc_private.h" -extern pthread_mutex_t __getaddrinfo_thread_lock; -#define THREAD_LOCK() \ - if (__isthreaded) _pthread_mutex_lock(&__getaddrinfo_thread_lock); -#define THREAD_UNLOCK() \ - if (__isthreaded) _pthread_mutex_unlock(&__getaddrinfo_thread_lock); +static mutex_t _getipnodeby_thread_lock = MUTEX_INITIALIZER; +#define THREAD_LOCK() mutex_lock(&_getipnodeby_thread_lock); +#define THREAD_UNLOCK() mutex_unlock(&_getipnodeby_thread_lock); /* Host lookup order if nsswitch.conf is broken or nonexistant */ static const ns_src default_src[] = {