about summary refs log tree commit diff
path: root/linuxthreads/sysdeps/pthread/bits/libc-lock.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-08-08 07:43:03 +0000
committerUlrich Drepper <drepper@redhat.com>2003-08-08 07:43:03 +0000
commit334fcf2a65f3b58867ce136da767c6c58a3d45ed (patch)
tree36daebcd9bc1c447dc5bd04ac0e1b310214fa8e6 /linuxthreads/sysdeps/pthread/bits/libc-lock.h
parenta30fb2df74710413014897f527bb565caf7cab9f (diff)
downloadglibc-334fcf2a65f3b58867ce136da767c6c58a3d45ed.tar.gz
glibc-334fcf2a65f3b58867ce136da767c6c58a3d45ed.tar.xz
glibc-334fcf2a65f3b58867ce136da767c6c58a3d45ed.zip
Update.
2003-08-07  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/generic/ldsodefs.h (_rtld_global): Add
	_dl_rtld_lock_recursive and _dl_rtld_unlock_recursive.
	* elf/rtld.c (rtld_lock_default_lock_recursive,
	rtld_lock_default_unlock_recursive): New functions.
	(dl_main): Initialize _dl_rtld_lock_recursive and
	_dl_rtld_unlock_recursive.

2003-08-05  Jakub Jelinek  <jakub@redhat.com>

	* elf/ldconfig.c (main): Append SLIBDIR and LIBDIR to
	config_file directories instead of prepending.
Diffstat (limited to 'linuxthreads/sysdeps/pthread/bits/libc-lock.h')
-rw-r--r--linuxthreads/sysdeps/pthread/bits/libc-lock.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/linuxthreads/sysdeps/pthread/bits/libc-lock.h b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
index 2697a18371..c0d0debe14 100644
--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h
+++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
@@ -180,7 +180,6 @@ typedef pthread_key_t __libc_key_t;
 
 /* Lock the recursive named lock variable.  */
 #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex)
-#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
 
 /* Try to lock the named lock variable.  */
 #define __libc_lock_trylock(NAME) \
@@ -203,8 +202,23 @@ typedef pthread_key_t __libc_key_t;
 
 /* Unlock the recursive named lock variable.  */
 #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex)
-#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
 
+#if defined _LIBC && defined SHARED
+# define __rtld_lock_default_lock_recursive(lock) \
+  ++((pthread_mutex_t *)(lock))->__m_count;
+
+# define __rtld_lock_default_unlock_recursive(lock) \
+  --((pthread_mutex_t *)(lock))->__m_count;
+
+# define __rtld_lock_lock_recursive(NAME) \
+  GL(dl_rtld_lock_recursive) (&(NAME).mutex)
+
+# define __rtld_lock_unlock_recursive(NAME) \
+  GL(dl_rtld_unlock_recursive) (&(NAME).mutex)
+#else
+#define __rtld_lock_lock_recursive(NAME) __libc_lock_lock_recursive (NAME)
+#define __rtld_lock_unlock_recursive(NAME) __libc_lock_unlock_recursive (NAME)
+#endif
 
 /* Define once control variable.  */
 #if PTHREAD_ONCE_INIT == 0