summaryrefslogtreecommitdiffstats
path: root/include/resolv.h
diff options
context:
space:
mode:
author"Steven J. Hill" <sjhill@realitydiluted.com>2005-06-03 03:19:48 +0000
committer"Steven J. Hill" <sjhill@realitydiluted.com>2005-06-03 03:19:48 +0000
commitb972f78f0d58d9babfd27074a7207c42bf58df6c (patch)
treed48715202719c1255f8197292b0c2e6e1a9a5ad2 /include/resolv.h
parent26d0cf034b04c3a4f14ae6ead92006b1391af835 (diff)
downloaduClibc-alpine-b972f78f0d58d9babfd27074a7207c42bf58df6c.tar.bz2
uClibc-alpine-b972f78f0d58d9babfd27074a7207c42bf58df6c.tar.xz
Update structures and defines necessary to make resolver code thread
safe for TLS and NPTL. Our name resolver code is so out of date, we made not be able to correctly utilize it in multi-threaded programs compiled with NPTL.
Diffstat (limited to 'include/resolv.h')
-rw-r--r--include/resolv.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/resolv.h b/include/resolv.h
index 815b3a92a..e94247f91 100644
--- a/include/resolv.h
+++ b/include/resolv.h
@@ -217,7 +217,25 @@ typedef struct __res_state *res_state;
/* 0x00008000 */
/* Internal (static) resolver context. */
+/*
+ * NPTL - This code was taken from 'include/resolve.h'
+ * and makes the assumption that our libraries
+ * are reentrant.
+ */
+#ifdef IS_IN_libpthread
+#include <libc-symbols.h>
+#include <tls.h>
+#if USE___THREAD
+# undef _res
+# ifndef NOT_IN_libc
+# define __resp __libc_resp
+# endif
+# define _res (*__resp)
+extern __thread struct __res_state *__resp attribute_tls_model_ie;
+#endif
+#else
extern struct __res_state _res;
+#endif
#ifndef __BIND_NOSTATIC