diff options
author | deischen <deischen@FreeBSD.org> | 2003-05-04 22:36:46 +0000 |
---|---|---|
committer | deischen <deischen@FreeBSD.org> | 2003-05-04 22:36:46 +0000 |
commit | b9459b93990457e57a289323e1cab3e685ea9b5c (patch) | |
tree | 99ec35f5218201f02e7544eff495375f8ad8cd14 | |
parent | 3cb9ba9e43902d7a4cf096e0b6cd3f12eda1b92c (diff) | |
download | FreeBSD-src-b9459b93990457e57a289323e1cab3e685ea9b5c.zip FreeBSD-src-b9459b93990457e57a289323e1cab3e685ea9b5c.tar.gz |
Replace use of a spinlock with a mutex.
-rw-r--r-- | lib/libc/net/getaddrinfo.c | 10 | ||||
-rw-r--r-- | lib/libc/net/name6.c | 11 |
2 files changed, 9 insertions, 12 deletions
diff --git a/lib/libc/net/getaddrinfo.c b/lib/libc/net/getaddrinfo.c index e2cb71a..2a8ccae 100644 --- a/lib/libc/net/getaddrinfo.c +++ b/lib/libc/net/getaddrinfo.c @@ -77,6 +77,7 @@ __FBSDID("$FreeBSD$"); #include <rpcsvc/yp_prot.h> #include <rpcsvc/ypclnt.h> #include <netdb.h> +#include <pthread.h> #include <resolv.h> #include <string.h> #include <stdlib.h> @@ -256,20 +257,17 @@ static char *ai_errlist[] = { "Unknown error", /* EAI_MAX */ }; -/* Make getaddrinfo() thread-safe in libc for use with kernel threads. */ -#include "libc_private.h" -#include "spinlock.h" /* * XXX: Our res_*() is 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 res_*(). */ -spinlock_t __getaddrinfo_thread_lock = _SPINLOCK_INITIALIZER; +pthread_mutex_t __getaddrinfo_thread_lock = PTHREAD_MUTEX_INITIALIZER; #define THREAD_LOCK() \ - if (__isthreaded) _SPINLOCK(&__getaddrinfo_thread_lock); + if (__isthreaded) _pthread_mutex_lock(&__getaddrinfo_thread_lock); #define THREAD_UNLOCK() \ - if (__isthreaded) _SPINUNLOCK(&__getaddrinfo_thread_lock); + if (__isthreaded) _pthread_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 3326cdf..b1a4953 100644 --- a/lib/libc/net/name6.c +++ b/lib/libc/net/name6.c @@ -114,6 +114,7 @@ __FBSDID("$FreeBSD$"); #include <string.h> #include <stdarg.h> #include <nsswitch.h> +#include <pthread.h> #include <unistd.h> #include "un-namespace.h" @@ -189,20 +190,18 @@ static void _dns_ehent(void) __unused; static int _icmp_ghbyaddr(void *, void *, va_list); #endif /* ICMPNL */ -/* Make getipnodeby*() thread-safe in libc for use with kernel threads. */ -#include "libc_private.h" -#include "spinlock.h" /* * XXX: Our res_*() is 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 res_*(). */ -extern spinlock_t __getaddrinfo_thread_lock; +#include "libc_private.h" +extern pthread_mutex_t __getaddrinfo_thread_lock; #define THREAD_LOCK() \ - if (__isthreaded) _SPINLOCK(&__getaddrinfo_thread_lock); + if (__isthreaded) _pthread_mutex_lock(&__getaddrinfo_thread_lock); #define THREAD_UNLOCK() \ - if (__isthreaded) _SPINUNLOCK(&__getaddrinfo_thread_lock); + if (__isthreaded) _pthread_mutex_unlock(&__getaddrinfo_thread_lock); /* Host lookup order if nsswitch.conf is broken or nonexistant */ static const ns_src default_src[] = { |