about summary refs log tree commit diff
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 }