* [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc
@ 2021-05-06 20:06 Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 2/3] linux: Move ftrylockfile/_IO_ftrylockfile " Adhemerval Zanella
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Adhemerval Zanella @ 2021-05-06 20:06 UTC (permalink / raw)
To: libc-alpha; +Cc: Florian Weimer
The single-thread optimization is done in a platform neutral way
by using __libc_single_threaded.
Hurd is not change, it is used it own lock scheme (which call
_cthreads_flockfile).
Checked on x86_64-linux-gnu.
---
nptl/Makefile | 2 --
stdio-common/flockfile.c | 11 +++++--
sysdeps/pthread/flockfile.c | 31 -------------------
.../sysv/linux/aarch64/libpthread.abilist | 2 --
.../unix/sysv/linux/alpha/libpthread.abilist | 2 --
.../unix/sysv/linux/arc/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
.../unix/sysv/linux/csky/libpthread.abilist | 2 --
.../unix/sysv/linux/hppa/libpthread.abilist | 2 --
.../unix/sysv/linux/i386/libpthread.abilist | 2 --
.../unix/sysv/linux/ia64/libpthread.abilist | 2 --
.../linux/m68k/coldfire/libpthread.abilist | 2 --
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
.../linux/microblaze/be/libpthread.abilist | 2 --
.../linux/microblaze/le/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/libpthread.abilist | 2 --
.../sysv/linux/mips/mips64/libpthread.abilist | 2 --
.../unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../powerpc/powerpc32/libpthread.abilist | 2 --
.../powerpc/powerpc64/be/libpthread.abilist | 2 --
.../powerpc/powerpc64/le/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
.../linux/s390/s390-32/libpthread.abilist | 2 --
.../linux/s390/s390-64/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
.../linux/sparc/sparc32/libpthread.abilist | 2 --
.../linux/sparc/sparc64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
32 files changed, 8 insertions(+), 94 deletions(-)
delete mode 100644 sysdeps/pthread/flockfile.c
diff --git a/nptl/Makefile b/nptl/Makefile
index b5f26c6864..005fef1bd7 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -178,7 +178,6 @@ libpthread-routines = \
cleanup \
cleanup_defer \
events \
- flockfile \
ftrylockfile \
funlockfile \
libpthread-compat \
@@ -447,7 +446,6 @@ extra-objs += $(crti-objs) $(crtn-objs)
extra-objs += pt-crti.o
endif
-CFLAGS-flockfile.c += $(libio-mtsafe)
CFLAGS-ftrylockfile.c += $(libio-mtsafe)
CFLAGS-funlockfile.c += $(libio-mtsafe)
diff --git a/stdio-common/flockfile.c b/stdio-common/flockfile.c
index 0bc856a465..c838dcd538 100644
--- a/stdio-common/flockfile.c
+++ b/stdio-common/flockfile.c
@@ -17,13 +17,18 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-
-#undef _IO_flockfile
+#include <stdio-lock.h>
+#include <sys/single_threaded.h>
void
__flockfile (FILE *stream)
{
- /* Do nothing. Using this version does not do any locking. */
+ bool multithread = __libc_single_threaded == 0;
+ if (multithread)
+ {
+ stream->_flags2 |= _IO_FLAGS2_NEED_LOCK;
+ _IO_lock_lock (*stream->_lock);
+ }
}
weak_alias (__flockfile, flockfile);
weak_alias (__flockfile, _IO_flockfile)
diff --git a/sysdeps/pthread/flockfile.c b/sysdeps/pthread/flockfile.c
deleted file mode 100644
index c67d6c8535..0000000000
--- a/sysdeps/pthread/flockfile.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2002-2021 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdio-lock.h>
-
-
-void
-__flockfile (FILE *stream)
-{
- stream->_flags2 |= _IO_FLAGS2_NEED_LOCK;
- _IO_lock_lock (*stream->_lock);
-}
-strong_alias (__flockfile, _IO_flockfile)
-weak_alias (__flockfile, flockfile)
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index b4f0fdd999..b5a21ad7cd 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 _IO_flockfile F
GLIBC_2.17 _IO_ftrylockfile F
GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 flockfile F
GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index c2017537e2..d88a55c5dc 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index bc072be61f..ddda1cb0b8 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.32 _IO_flockfile F
GLIBC_2.32 _IO_ftrylockfile F
GLIBC_2.32 _IO_funlockfile F
GLIBC_2.32 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.32 __pthread_register_cancel F
GLIBC_2.32 __pthread_register_cancel_defer F
GLIBC_2.32 __pthread_unregister_cancel F
GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 flockfile F
GLIBC_2.32 ftrylockfile F
GLIBC_2.32 funlockfile F
GLIBC_2.32 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 5b52c456fb..ae1defcddc 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_flockfile F
GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
@@ -17,7 +16,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 flockfile F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 5b52c456fb..ae1defcddc 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_flockfile F
GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
@@ -17,7 +16,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 flockfile F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index d55f09a9fe..760a569b51 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.29 _IO_flockfile F
GLIBC_2.29 _IO_ftrylockfile F
GLIBC_2.29 _IO_funlockfile F
GLIBC_2.29 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.29 __pthread_register_cancel F
GLIBC_2.29 __pthread_register_cancel_defer F
GLIBC_2.29 __pthread_unregister_cancel F
GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 flockfile F
GLIBC_2.29 ftrylockfile F
GLIBC_2.29 funlockfile F
GLIBC_2.29 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 2c4a7041b6..4ff101d7f2 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 1cbc49b937..36d415aef5 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 6b87a988d4..3c59353815 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 5b52c456fb..ae1defcddc 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_flockfile F
GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
@@ -17,7 +16,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 flockfile F
GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 1cbc49b937..36d415aef5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index ee29730057..5c6c7b229c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 _IO_flockfile F
GLIBC_2.18 _IO_ftrylockfile F
GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 flockfile F
GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index ee29730057..5c6c7b229c 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.18 _IO_flockfile F
GLIBC_2.18 _IO_ftrylockfile F
GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 flockfile F
GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index e523996633..1d36022ee2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index e523996633..1d36022ee2 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 059b21f854..5611822c38 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.21 _IO_flockfile F
GLIBC_2.21 _IO_ftrylockfile F
GLIBC_2.21 _IO_funlockfile F
GLIBC_2.21 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.21 __pthread_register_cancel F
GLIBC_2.21 __pthread_register_cancel_defer F
GLIBC_2.21 __pthread_unregister_cancel F
GLIBC_2.21 __pthread_unregister_cancel_restore F
-GLIBC_2.21 flockfile F
GLIBC_2.21 ftrylockfile F
GLIBC_2.21 funlockfile F
GLIBC_2.21 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index 84312f522b..aa24808b1e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 2d5583ebe8..5f5abdae73 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -6,11 +6,9 @@ GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.28 thrd_create F
GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
-GLIBC_2.3 _IO_flockfile F
GLIBC_2.3 _IO_ftrylockfile F
GLIBC_2.3 _IO_funlockfile F
GLIBC_2.3 __errno_location F
-GLIBC_2.3 flockfile F
GLIBC_2.3 ftrylockfile F
GLIBC_2.3 funlockfile F
GLIBC_2.3 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index b4f0fdd999..b5a21ad7cd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.17 _IO_flockfile F
GLIBC_2.17 _IO_ftrylockfile F
GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 flockfile F
GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index cc35881f1a..f0493d8973 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.33 _IO_flockfile F
GLIBC_2.33 _IO_ftrylockfile F
GLIBC_2.33 _IO_funlockfile F
GLIBC_2.33 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.33 __pthread_register_cancel F
GLIBC_2.33 __pthread_register_cancel_defer F
GLIBC_2.33 __pthread_unregister_cancel F
GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 flockfile F
GLIBC_2.33 ftrylockfile F
GLIBC_2.33 funlockfile F
GLIBC_2.33 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 6946ced1b9..c0279888a0 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.27 _IO_flockfile F
GLIBC_2.27 _IO_ftrylockfile F
GLIBC_2.27 _IO_funlockfile F
GLIBC_2.27 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.27 __pthread_register_cancel F
GLIBC_2.27 __pthread_register_cancel_defer F
GLIBC_2.27 __pthread_unregister_cancel F
GLIBC_2.27 __pthread_unregister_cancel_restore F
-GLIBC_2.27 flockfile F
GLIBC_2.27 ftrylockfile F
GLIBC_2.27 funlockfile F
GLIBC_2.27 pthread_attr_getaffinity_np F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0c6df4a437..286aedf9ca 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index d287d8fe7a..35248d9303 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -4,11 +4,9 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.19 __libpthread_version_placeholder F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 2c4a7041b6..4ff101d7f2 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 2c4a7041b6..4ff101d7f2 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index c2017537e2..d88a55c5dc 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -1,8 +1,6 @@
-GLIBC_2.0 _IO_flockfile F
GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 flockfile F
GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 6b87a988d4..3c59353815 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_flockfile F
GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 flockfile F
GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index cea092874a..732e55148d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -3,11 +3,9 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2.5 _IO_flockfile F
GLIBC_2.2.5 _IO_ftrylockfile F
GLIBC_2.2.5 _IO_funlockfile F
GLIBC_2.2.5 __errno_location F
-GLIBC_2.2.5 flockfile F
GLIBC_2.2.5 ftrylockfile F
GLIBC_2.2.5 funlockfile F
GLIBC_2.2.5 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 394748f198..22262d9ceb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -1,4 +1,3 @@
-GLIBC_2.16 _IO_flockfile F
GLIBC_2.16 _IO_ftrylockfile F
GLIBC_2.16 _IO_funlockfile F
GLIBC_2.16 __errno_location F
@@ -6,7 +5,6 @@ GLIBC_2.16 __pthread_register_cancel F
GLIBC_2.16 __pthread_register_cancel_defer F
GLIBC_2.16 __pthread_unregister_cancel F
GLIBC_2.16 __pthread_unregister_cancel_restore F
-GLIBC_2.16 flockfile F
GLIBC_2.16 ftrylockfile F
GLIBC_2.16 funlockfile F
GLIBC_2.16 pthread_attr_getaffinity_np F
--
2.30.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/3] linux: Move ftrylockfile/_IO_ftrylockfile into libc
2021-05-06 20:06 [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc Adhemerval Zanella
@ 2021-05-06 20:06 ` Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 3/3] linux: Move funlockfile/_IO_funlockfile " Adhemerval Zanella
2021-05-06 20:34 ` [PATCH 1/3] linux: Move flockfile/_IO_flockfile " Florian Weimer
2 siblings, 0 replies; 6+ messages in thread
From: Adhemerval Zanella @ 2021-05-06 20:06 UTC (permalink / raw)
To: libc-alpha; +Cc: Florian Weimer
The single-thread optimization is done in a platform neutral way
by using __libc_single_threaded.
Hurd is not change, it is used it own lock scheme (which call
_cthreads_ftrylockfile).
Checked on x86_64-linux-gnu.
---
nptl/Makefile | 1 -
stdio-common/ftrylockfile.c | 10 +++---
sysdeps/pthread/ftrylockfile.c | 31 -------------------
.../sysv/linux/aarch64/libpthread.abilist | 2 --
.../unix/sysv/linux/alpha/libpthread.abilist | 2 --
.../unix/sysv/linux/arc/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
.../unix/sysv/linux/csky/libpthread.abilist | 2 --
.../unix/sysv/linux/hppa/libpthread.abilist | 2 --
.../unix/sysv/linux/i386/libpthread.abilist | 2 --
.../unix/sysv/linux/ia64/libpthread.abilist | 2 --
.../linux/m68k/coldfire/libpthread.abilist | 2 --
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
.../linux/microblaze/be/libpthread.abilist | 2 --
.../linux/microblaze/le/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/libpthread.abilist | 2 --
.../sysv/linux/mips/mips64/libpthread.abilist | 2 --
.../unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../powerpc/powerpc32/libpthread.abilist | 2 --
.../powerpc/powerpc64/be/libpthread.abilist | 2 --
.../powerpc/powerpc64/le/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
.../linux/s390/s390-32/libpthread.abilist | 2 --
.../linux/s390/s390-64/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
.../linux/sparc/sparc32/libpthread.abilist | 2 --
.../linux/sparc/sparc64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
32 files changed, 6 insertions(+), 94 deletions(-)
delete mode 100644 sysdeps/pthread/ftrylockfile.c
diff --git a/nptl/Makefile b/nptl/Makefile
index 005fef1bd7..3bd72bc1c2 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -178,7 +178,6 @@ libpthread-routines = \
cleanup \
cleanup_defer \
events \
- ftrylockfile \
funlockfile \
libpthread-compat \
nptl-init \
diff --git a/stdio-common/ftrylockfile.c b/stdio-common/ftrylockfile.c
index 4f7e2dd617..66df6c1834 100644
--- a/stdio-common/ftrylockfile.c
+++ b/stdio-common/ftrylockfile.c
@@ -17,14 +17,16 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-
-#undef _IO_ftrylockfile
+#include <stdio-lock.h>
+#include <sys/single_threaded.h>
int
__ftrylockfile (FILE *stream)
{
- /* Do nothing. Using this version does not do any locking. */
- return 1;
+ bool multithread = __libc_single_threaded == 0;
+ if (multithread)
+ return _IO_lock_trylock (*stream->_lock);
+ return 0;
}
weak_alias (__ftrylockfile, ftrylockfile);
weak_alias (__ftrylockfile, _IO_ftrylockfile)
diff --git a/sysdeps/pthread/ftrylockfile.c b/sysdeps/pthread/ftrylockfile.c
deleted file mode 100644
index 5138005bdc..0000000000
--- a/sysdeps/pthread/ftrylockfile.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2002-2021 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <errno.h>
-#include <pthread.h>
-#include <stdio.h>
-#include <stdio-lock.h>
-
-
-int
-__ftrylockfile (FILE *stream)
-{
- return _IO_lock_trylock (*stream->_lock);
-}
-strong_alias (__ftrylockfile, _IO_ftrylockfile)
-weak_alias (__ftrylockfile, ftrylockfile)
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index b5a21ad7cd..ffbd77cedf 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.17 _IO_ftrylockfile F
GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
GLIBC_2.17 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index d88a55c5dc..3110c6df17 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index ddda1cb0b8..7de7a4899e 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.32 _IO_ftrylockfile F
GLIBC_2.32 _IO_funlockfile F
GLIBC_2.32 __errno_location F
GLIBC_2.32 __pthread_register_cancel F
GLIBC_2.32 __pthread_register_cancel_defer F
GLIBC_2.32 __pthread_unregister_cancel F
GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 ftrylockfile F
GLIBC_2.32 funlockfile F
GLIBC_2.32 pthread_attr_getaffinity_np F
GLIBC_2.32 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index ae1defcddc..3da5d28656 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
@@ -16,7 +15,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index ae1defcddc..3da5d28656 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
@@ -16,7 +15,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 760a569b51..6e86cd96cd 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.29 _IO_ftrylockfile F
GLIBC_2.29 _IO_funlockfile F
GLIBC_2.29 __errno_location F
GLIBC_2.29 __pthread_register_cancel F
GLIBC_2.29 __pthread_register_cancel_defer F
GLIBC_2.29 __pthread_unregister_cancel F
GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 ftrylockfile F
GLIBC_2.29 funlockfile F
GLIBC_2.29 pthread_attr_getaffinity_np F
GLIBC_2.29 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 4ff101d7f2..6dbe47e566 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index 36d415aef5..e50fac2320 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index 3c59353815..c136f64653 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index ae1defcddc..3da5d28656 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -8,7 +8,6 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_ftrylockfile F
GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
@@ -16,7 +15,6 @@ GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 ftrylockfile F
GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index 36d415aef5..e50fac2320 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index 5c6c7b229c..fd9fa8e1bf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.18 _IO_ftrylockfile F
GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
GLIBC_2.18 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index 5c6c7b229c..fd9fa8e1bf 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.18 _IO_ftrylockfile F
GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 ftrylockfile F
GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
GLIBC_2.18 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index 1d36022ee2..a607c10506 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index 1d36022ee2..a607c10506 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index 5611822c38..bfaf7b18cc 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.21 _IO_ftrylockfile F
GLIBC_2.21 _IO_funlockfile F
GLIBC_2.21 __errno_location F
GLIBC_2.21 __pthread_register_cancel F
GLIBC_2.21 __pthread_register_cancel_defer F
GLIBC_2.21 __pthread_unregister_cancel F
GLIBC_2.21 __pthread_unregister_cancel_restore F
-GLIBC_2.21 ftrylockfile F
GLIBC_2.21 funlockfile F
GLIBC_2.21 pthread_attr_getaffinity_np F
GLIBC_2.21 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index aa24808b1e..b7292ba735 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index 5f5abdae73..ddd982e470 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -6,10 +6,8 @@ GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.28 thrd_create F
GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
-GLIBC_2.3 _IO_ftrylockfile F
GLIBC_2.3 _IO_funlockfile F
GLIBC_2.3 __errno_location F
-GLIBC_2.3 ftrylockfile F
GLIBC_2.3 funlockfile F
GLIBC_2.3 pthread_attr_getguardsize F
GLIBC_2.3 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index b5a21ad7cd..ffbd77cedf 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.17 _IO_ftrylockfile F
GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 ftrylockfile F
GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
GLIBC_2.17 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index f0493d8973..2f492d0934 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.33 _IO_ftrylockfile F
GLIBC_2.33 _IO_funlockfile F
GLIBC_2.33 __errno_location F
GLIBC_2.33 __pthread_register_cancel F
GLIBC_2.33 __pthread_register_cancel_defer F
GLIBC_2.33 __pthread_unregister_cancel F
GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 ftrylockfile F
GLIBC_2.33 funlockfile F
GLIBC_2.33 pthread_attr_getaffinity_np F
GLIBC_2.33 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index c0279888a0..53363c9eca 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.27 _IO_ftrylockfile F
GLIBC_2.27 _IO_funlockfile F
GLIBC_2.27 __errno_location F
GLIBC_2.27 __pthread_register_cancel F
GLIBC_2.27 __pthread_register_cancel_defer F
GLIBC_2.27 __pthread_unregister_cancel F
GLIBC_2.27 __pthread_unregister_cancel_restore F
-GLIBC_2.27 ftrylockfile F
GLIBC_2.27 funlockfile F
GLIBC_2.27 pthread_attr_getaffinity_np F
GLIBC_2.27 pthread_attr_getguardsize F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 286aedf9ca..0a2a1eacfa 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index 35248d9303..d105c7fc36 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -4,10 +4,8 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.19 __libpthread_version_placeholder F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 4ff101d7f2..6dbe47e566 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 4ff101d7f2..6dbe47e566 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index d88a55c5dc..3110c6df17 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -1,7 +1,5 @@
-GLIBC_2.0 _IO_ftrylockfile F
GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 ftrylockfile F
GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index 3c59353815..c136f64653 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_ftrylockfile F
GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 ftrylockfile F
GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 732e55148d..25f59472dd 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -3,10 +3,8 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2.5 _IO_ftrylockfile F
GLIBC_2.2.5 _IO_funlockfile F
GLIBC_2.2.5 __errno_location F
-GLIBC_2.2.5 ftrylockfile F
GLIBC_2.2.5 funlockfile F
GLIBC_2.2.5 pthread_attr_getguardsize F
GLIBC_2.2.5 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 22262d9ceb..0fba7f100d 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -1,11 +1,9 @@
-GLIBC_2.16 _IO_ftrylockfile F
GLIBC_2.16 _IO_funlockfile F
GLIBC_2.16 __errno_location F
GLIBC_2.16 __pthread_register_cancel F
GLIBC_2.16 __pthread_register_cancel_defer F
GLIBC_2.16 __pthread_unregister_cancel F
GLIBC_2.16 __pthread_unregister_cancel_restore F
-GLIBC_2.16 ftrylockfile F
GLIBC_2.16 funlockfile F
GLIBC_2.16 pthread_attr_getaffinity_np F
GLIBC_2.16 pthread_attr_getguardsize F
--
2.30.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 3/3] linux: Move funlockfile/_IO_funlockfile into libc
2021-05-06 20:06 [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 2/3] linux: Move ftrylockfile/_IO_ftrylockfile " Adhemerval Zanella
@ 2021-05-06 20:06 ` Adhemerval Zanella
2021-05-06 20:34 ` [PATCH 1/3] linux: Move flockfile/_IO_flockfile " Florian Weimer
2 siblings, 0 replies; 6+ messages in thread
From: Adhemerval Zanella @ 2021-05-06 20:06 UTC (permalink / raw)
To: libc-alpha; +Cc: Florian Weimer
The single-thread optimization is done in a platform neutral way
by using __libc_single_threaded.
Hurd is not change, it is used it own lock scheme (which call
_cthreads_funlockfile).
Checked on x86_64-linux-gnu.
---
nptl/Makefile | 1 -
stdio-common/funlockfile.c | 8 +++--
sysdeps/pthread/funlockfile.c | 30 -------------------
.../sysv/linux/aarch64/libpthread.abilist | 2 --
.../unix/sysv/linux/alpha/libpthread.abilist | 2 --
.../unix/sysv/linux/arc/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/be/libpthread.abilist | 2 --
.../unix/sysv/linux/arm/le/libpthread.abilist | 2 --
.../unix/sysv/linux/csky/libpthread.abilist | 2 --
.../unix/sysv/linux/hppa/libpthread.abilist | 2 --
.../unix/sysv/linux/i386/libpthread.abilist | 2 --
.../unix/sysv/linux/ia64/libpthread.abilist | 2 --
.../linux/m68k/coldfire/libpthread.abilist | 2 --
.../sysv/linux/m68k/m680x0/libpthread.abilist | 2 --
.../linux/microblaze/be/libpthread.abilist | 2 --
.../linux/microblaze/le/libpthread.abilist | 2 --
.../sysv/linux/mips/mips32/libpthread.abilist | 2 --
.../sysv/linux/mips/mips64/libpthread.abilist | 2 --
.../unix/sysv/linux/nios2/libpthread.abilist | 2 --
.../powerpc/powerpc32/libpthread.abilist | 2 --
.../powerpc/powerpc64/be/libpthread.abilist | 2 --
.../powerpc/powerpc64/le/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv32/libpthread.abilist | 2 --
.../sysv/linux/riscv/rv64/libpthread.abilist | 2 --
.../linux/s390/s390-32/libpthread.abilist | 2 --
.../linux/s390/s390-64/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/be/libpthread.abilist | 2 --
.../unix/sysv/linux/sh/le/libpthread.abilist | 2 --
.../linux/sparc/sparc32/libpthread.abilist | 2 --
.../linux/sparc/sparc64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/64/libpthread.abilist | 2 --
.../sysv/linux/x86_64/x32/libpthread.abilist | 2 --
32 files changed, 5 insertions(+), 92 deletions(-)
delete mode 100644 sysdeps/pthread/funlockfile.c
diff --git a/nptl/Makefile b/nptl/Makefile
index 3bd72bc1c2..7062f972a6 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -178,7 +178,6 @@ libpthread-routines = \
cleanup \
cleanup_defer \
events \
- funlockfile \
libpthread-compat \
nptl-init \
nptlfreeres \
diff --git a/stdio-common/funlockfile.c b/stdio-common/funlockfile.c
index 50f2f99948..66b4403dc2 100644
--- a/stdio-common/funlockfile.c
+++ b/stdio-common/funlockfile.c
@@ -17,13 +17,15 @@
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-
-#undef _IO_funlockfile
+#include <stdio-lock.h>
+#include <sys/single_threaded.h>
void
__funlockfile (FILE *stream)
{
- /* Do nothing. Using this version does not do any locking. */
+ bool multithread = __libc_single_threaded == 0;
+ if (multithread)
+ _IO_lock_unlock (*stream->_lock);
}
weak_alias (__funlockfile, _IO_funlockfile)
weak_alias (__funlockfile, funlockfile);
diff --git a/sysdeps/pthread/funlockfile.c b/sysdeps/pthread/funlockfile.c
deleted file mode 100644
index 0ee5cb6451..0000000000
--- a/sysdeps/pthread/funlockfile.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* Copyright (C) 2002-2021 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <pthread.h>
-#include <stdio.h>
-#include <stdio-lock.h>
-
-
-void
-__funlockfile (FILE *stream)
-{
- _IO_lock_unlock (*stream->_lock);
-}
-strong_alias (__funlockfile, _IO_funlockfile)
-weak_alias (__funlockfile, funlockfile)
diff --git a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
index ffbd77cedf..36f05e77dd 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
GLIBC_2.17 pthread_attr_getguardsize F
GLIBC_2.17 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
index 3110c6df17..ad0ae35282 100644
--- a/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/arc/libpthread.abilist b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
index 7de7a4899e..83b55dfdb2 100644
--- a/sysdeps/unix/sysv/linux/arc/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.32 _IO_funlockfile F
GLIBC_2.32 __errno_location F
GLIBC_2.32 __pthread_register_cancel F
GLIBC_2.32 __pthread_register_cancel_defer F
GLIBC_2.32 __pthread_unregister_cancel F
GLIBC_2.32 __pthread_unregister_cancel_restore F
-GLIBC_2.32 funlockfile F
GLIBC_2.32 pthread_attr_getaffinity_np F
GLIBC_2.32 pthread_attr_getguardsize F
GLIBC_2.32 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
index 3da5d28656..af98ddd266 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libpthread.abilist
@@ -8,14 +8,12 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
GLIBC_2.4 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
index 3da5d28656..af98ddd266 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libpthread.abilist
@@ -8,14 +8,12 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
GLIBC_2.4 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/csky/libpthread.abilist b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
index 6e86cd96cd..ae0b322740 100644
--- a/sysdeps/unix/sysv/linux/csky/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.29 _IO_funlockfile F
GLIBC_2.29 __errno_location F
GLIBC_2.29 __pthread_register_cancel F
GLIBC_2.29 __pthread_register_cancel_defer F
GLIBC_2.29 __pthread_unregister_cancel F
GLIBC_2.29 __pthread_unregister_cancel_restore F
-GLIBC_2.29 funlockfile F
GLIBC_2.29 pthread_attr_getaffinity_np F
GLIBC_2.29 pthread_attr_getguardsize F
GLIBC_2.29 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
index 6dbe47e566..2a41f3b961 100644
--- a/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/i386/libpthread.abilist b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
index e50fac2320..d8f19bb5b4 100644
--- a/sysdeps/unix/sysv/linux/i386/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
index c136f64653..c905c119be 100644
--- a/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
index 3da5d28656..af98ddd266 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist
@@ -8,14 +8,12 @@ GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
GLIBC_2.30 __libpthread_version_placeholder F
GLIBC_2.31 pthread_clockjoin_np F
-GLIBC_2.4 _IO_funlockfile F
GLIBC_2.4 __errno_location F
GLIBC_2.4 __libpthread_version_placeholder F
GLIBC_2.4 __pthread_register_cancel F
GLIBC_2.4 __pthread_register_cancel_defer F
GLIBC_2.4 __pthread_unregister_cancel F
GLIBC_2.4 __pthread_unregister_cancel_restore F
-GLIBC_2.4 funlockfile F
GLIBC_2.4 pthread_attr_getaffinity_np F
GLIBC_2.4 pthread_attr_getguardsize F
GLIBC_2.4 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
index e50fac2320..d8f19bb5b4 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
index fd9fa8e1bf..fd957d6642 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
GLIBC_2.18 pthread_attr_getguardsize F
GLIBC_2.18 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
index fd9fa8e1bf..fd957d6642 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.18 _IO_funlockfile F
GLIBC_2.18 __errno_location F
GLIBC_2.18 __pthread_register_cancel F
GLIBC_2.18 __pthread_register_cancel_defer F
GLIBC_2.18 __pthread_unregister_cancel F
GLIBC_2.18 __pthread_unregister_cancel_restore F
-GLIBC_2.18 funlockfile F
GLIBC_2.18 pthread_attr_getaffinity_np F
GLIBC_2.18 pthread_attr_getguardsize F
GLIBC_2.18 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
index a607c10506..fe9d706889 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
index a607c10506..fe9d706889 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
index bfaf7b18cc..5497256770 100644
--- a/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.21 _IO_funlockfile F
GLIBC_2.21 __errno_location F
GLIBC_2.21 __pthread_register_cancel F
GLIBC_2.21 __pthread_register_cancel_defer F
GLIBC_2.21 __pthread_unregister_cancel F
GLIBC_2.21 __pthread_unregister_cancel_restore F
-GLIBC_2.21 funlockfile F
GLIBC_2.21 pthread_attr_getaffinity_np F
GLIBC_2.21 pthread_attr_getguardsize F
GLIBC_2.21 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
index b7292ba735..b15a84fd3e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
index ddd982e470..b3994cd280 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libpthread.abilist
@@ -6,9 +6,7 @@ GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.28 thrd_create F
GLIBC_2.28 thrd_detach F
GLIBC_2.28 thrd_join F
-GLIBC_2.3 _IO_funlockfile F
GLIBC_2.3 __errno_location F
-GLIBC_2.3 funlockfile F
GLIBC_2.3 pthread_attr_getguardsize F
GLIBC_2.3 pthread_attr_getstack F
GLIBC_2.3 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
index ffbd77cedf..36f05e77dd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.17 _IO_funlockfile F
GLIBC_2.17 __errno_location F
GLIBC_2.17 __pthread_register_cancel F
GLIBC_2.17 __pthread_register_cancel_defer F
GLIBC_2.17 __pthread_unregister_cancel F
GLIBC_2.17 __pthread_unregister_cancel_restore F
-GLIBC_2.17 funlockfile F
GLIBC_2.17 pthread_attr_getaffinity_np F
GLIBC_2.17 pthread_attr_getguardsize F
GLIBC_2.17 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
index 2f492d0934..91e3afa737 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.33 _IO_funlockfile F
GLIBC_2.33 __errno_location F
GLIBC_2.33 __pthread_register_cancel F
GLIBC_2.33 __pthread_register_cancel_defer F
GLIBC_2.33 __pthread_unregister_cancel F
GLIBC_2.33 __pthread_unregister_cancel_restore F
-GLIBC_2.33 funlockfile F
GLIBC_2.33 pthread_attr_getaffinity_np F
GLIBC_2.33 pthread_attr_getguardsize F
GLIBC_2.33 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
index 53363c9eca..b7bd70768f 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.27 _IO_funlockfile F
GLIBC_2.27 __errno_location F
GLIBC_2.27 __pthread_register_cancel F
GLIBC_2.27 __pthread_register_cancel_defer F
GLIBC_2.27 __pthread_unregister_cancel F
GLIBC_2.27 __pthread_unregister_cancel_restore F
-GLIBC_2.27 funlockfile F
GLIBC_2.27 pthread_attr_getaffinity_np F
GLIBC_2.27 pthread_attr_getguardsize F
GLIBC_2.27 pthread_attr_getstack F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
index 0a2a1eacfa..8d22b21118 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
index d105c7fc36..92336b6560 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist
@@ -4,9 +4,7 @@ GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
GLIBC_2.19 __libpthread_version_placeholder F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
index 6dbe47e566..2a41f3b961 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
index 6dbe47e566..2a41f3b961 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
index 3110c6df17..ad0ae35282 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist
@@ -1,6 +1,4 @@
-GLIBC_2.0 _IO_funlockfile F
GLIBC_2.0 __errno_location F
-GLIBC_2.0 funlockfile F
GLIBC_2.0 pthread_cancel F
GLIBC_2.0 pthread_create F
GLIBC_2.0 pthread_detach F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
index c136f64653..c905c119be 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2 _IO_funlockfile F
GLIBC_2.2 __errno_location F
-GLIBC_2.2 funlockfile F
GLIBC_2.2 pthread_attr_getguardsize F
GLIBC_2.2 pthread_attr_getstack F
GLIBC_2.2 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
index 25f59472dd..06c5f0e4af 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist
@@ -3,9 +3,7 @@ GLIBC_2.12 pthread_getname_np F
GLIBC_2.12 pthread_setname_np F
GLIBC_2.18 pthread_getattr_default_np F
GLIBC_2.18 pthread_setattr_default_np F
-GLIBC_2.2.5 _IO_funlockfile F
GLIBC_2.2.5 __errno_location F
-GLIBC_2.2.5 funlockfile F
GLIBC_2.2.5 pthread_attr_getguardsize F
GLIBC_2.2.5 pthread_attr_getstack F
GLIBC_2.2.5 pthread_attr_getstackaddr F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
index 0fba7f100d..298d3185bb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist
@@ -1,10 +1,8 @@
-GLIBC_2.16 _IO_funlockfile F
GLIBC_2.16 __errno_location F
GLIBC_2.16 __pthread_register_cancel F
GLIBC_2.16 __pthread_register_cancel_defer F
GLIBC_2.16 __pthread_unregister_cancel F
GLIBC_2.16 __pthread_unregister_cancel_restore F
-GLIBC_2.16 funlockfile F
GLIBC_2.16 pthread_attr_getaffinity_np F
GLIBC_2.16 pthread_attr_getguardsize F
GLIBC_2.16 pthread_attr_getstack F
--
2.30.2
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc
2021-05-06 20:06 [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 2/3] linux: Move ftrylockfile/_IO_ftrylockfile " Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 3/3] linux: Move funlockfile/_IO_funlockfile " Adhemerval Zanella
@ 2021-05-06 20:34 ` Florian Weimer
2021-05-06 21:01 ` Adhemerval Zanella
2 siblings, 1 reply; 6+ messages in thread
From: Florian Weimer @ 2021-05-06 20:34 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
> diff --git a/stdio-common/flockfile.c b/stdio-common/flockfile.c
> index 0bc856a465..c838dcd538 100644
> --- a/stdio-common/flockfile.c
> +++ b/stdio-common/flockfile.c
> @@ -17,13 +17,18 @@
> <https://www.gnu.org/licenses/>. */
>
> #include <stdio.h>
> +#include <stdio-lock.h>
> +#include <sys/single_threaded.h>
>
> void
> __flockfile (FILE *stream)
> {
> + bool multithread = __libc_single_threaded == 0;
> + if (multithread)
> + {
> + stream->_flags2 |= _IO_FLAGS2_NEED_LOCK;
> + _IO_lock_lock (*stream->_lock);
> + }
> }
I'm afraid this is not correct because a thread can become multithreaded
between the flockfile/funlockfile calls. As a result, the lock state
would be wrong at funlockfile time.
In order to optimize locks in such cases, it is necessary to perform the
same actions as the locking/unlocking operations, but without atomic
instructions.
The stream->_flags2 update has a data race with other _flags2 updates
(e.g., in __malloc_stats), but that's a preexisting bug that should be
fixed separately (there might be other affected places).
Thanks,
Florian
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc
2021-05-06 20:34 ` [PATCH 1/3] linux: Move flockfile/_IO_flockfile " Florian Weimer
@ 2021-05-06 21:01 ` Adhemerval Zanella
2021-05-07 6:37 ` Florian Weimer
0 siblings, 1 reply; 6+ messages in thread
From: Adhemerval Zanella @ 2021-05-06 21:01 UTC (permalink / raw)
To: Florian Weimer; +Cc: libc-alpha
On 06/05/2021 17:34, Florian Weimer wrote:
> * Adhemerval Zanella:
>
>> diff --git a/stdio-common/flockfile.c b/stdio-common/flockfile.c
>> index 0bc856a465..c838dcd538 100644
>> --- a/stdio-common/flockfile.c
>> +++ b/stdio-common/flockfile.c
>> @@ -17,13 +17,18 @@
>> <https://www.gnu.org/licenses/>. */
>>
>> #include <stdio.h>
>> +#include <stdio-lock.h>
>> +#include <sys/single_threaded.h>
>>
>> void
>> __flockfile (FILE *stream)
>> {
>> + bool multithread = __libc_single_threaded == 0;
>> + if (multithread)
>> + {
>> + stream->_flags2 |= _IO_FLAGS2_NEED_LOCK;
>> + _IO_lock_lock (*stream->_lock);
>> + }
>> }
>
> I'm afraid this is not correct because a thread can become multithreaded
> between the flockfile/funlockfile calls. As a result, the lock state
> would be wrong at funlockfile time.
>
> In order to optimize locks in such cases, it is necessary to perform the
> same actions as the locking/unlocking operations, but without atomic
> instructions.
>
> The stream->_flags2 update has a data race with other _flags2 updates
> (e.g., in __malloc_stats), but that's a preexisting bug that should be
> fixed separately (there might be other affected places).
>
I think both issues are already exist in current code, although libpthread
one always issues the unlock this same issue can happen.
I tried to just mimic what is currently done, but if you prefer we can
always use the libpthread version as default. For _IO_FLAGS2_NEED_LOCK
set, I think we should set only when get the stream lock.
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc
2021-05-06 21:01 ` Adhemerval Zanella
@ 2021-05-07 6:37 ` Florian Weimer
0 siblings, 0 replies; 6+ messages in thread
From: Florian Weimer @ 2021-05-07 6:37 UTC (permalink / raw)
To: Adhemerval Zanella; +Cc: libc-alpha
* Adhemerval Zanella:
> I tried to just mimic what is currently done, but if you prefer we can
> always use the libpthread version as default.
Yes, please.
> For _IO_FLAGS2_NEED_LOCK set, I think we should set only when get the
> stream lock.
Probably, but let's keep that as a separate change.
Thanks,
Florian
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-05-07 6:37 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-06 20:06 [PATCH 1/3] linux: Move flockfile/_IO_flockfile into libc Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 2/3] linux: Move ftrylockfile/_IO_ftrylockfile " Adhemerval Zanella
2021-05-06 20:06 ` [PATCH 3/3] linux: Move funlockfile/_IO_funlockfile " Adhemerval Zanella
2021-05-06 20:34 ` [PATCH 1/3] linux: Move flockfile/_IO_flockfile " Florian Weimer
2021-05-06 21:01 ` Adhemerval Zanella
2021-05-07 6:37 ` Florian Weimer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).