aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--include/libio.h11
-rw-r--r--nptl/ChangeLog4
-rw-r--r--nptl/sysdeps/pthread/bits/stdio-lock.h3
4 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cbb3498eb..227655be5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2002-12-20 Ulrich Drepper <drepper@redhat.com>
+ * include/libio.h [_IO_MTSAFE_IO && _IO_lock_inexpensive]:
+ Redefine _IO_flockifle and _IO_funlockfile as inlines.
+
* sysdeps/generic/dl-sysdep.c (_dl_important_hwcaps): For TLS
builds add "tls" in the search path.
* elf/ldconfig.c (is_hwcap_platform): Also recognize "tls".
diff --git a/include/libio.h b/include/libio.h
index ee727e262f..633ee51bb7 100644
--- a/include/libio.h
+++ b/include/libio.h
@@ -10,4 +10,15 @@ libc_hidden_proto (__woverflow)
libc_hidden_proto (__wunderflow)
libc_hidden_proto (__wuflow)
+#if defined _IO_MTSAFE_IO && _IO_lock_inexpensive
+# undef _IO_flockfile
+# define _IO_flockfile(_fp) \
+ if (((_fp)->_flags & _IO_USER_LOCK) == 0) \
+ _IO_lock_lock (*(_fp)->_lock)
+# undef _IO_funlockfile
+# define _IO_funlockfile(_fp) \
+ if (((_fp)->_flags & _IO_USER_LOCK) == 0) \
+ _IO_lock_unlock (*(_fp)->_lock)
+#endif
+
#endif
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index ed7de44425..1cb4c372c2 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,7 @@
+2002-12-20 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/pthread/bits/stdio-lock.h (_IO_lock_inexpensive): Define.
+
2002-12-19 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/dl-sysdep.h: Don't define
diff --git a/nptl/sysdeps/pthread/bits/stdio-lock.h b/nptl/sysdeps/pthread/bits/stdio-lock.h
index ea622e4142..fbb14a1120 100644
--- a/nptl/sysdeps/pthread/bits/stdio-lock.h
+++ b/nptl/sysdeps/pthread/bits/stdio-lock.h
@@ -24,6 +24,9 @@
#include <lowlevellock.h>
+/* The locking here is very inexpensive, even for inlining. */
+#define _IO_lock_inexpensive 1
+
typedef struct { int lock; int cnt; void *owner; } _IO_lock_t;
#define _IO_lock_initializer { LLL_MUTEX_LOCK_INITIALIZER, 0, NULL }