srcdir = .
MICROKERNEL := mach
-SYSDEPS := lockfile
+SYSDEPS :=
LCLHDRS :=
pt-setname-np \
cancellation \
herrno \
- $(SYSDEPS) \
# libpthread-routine
headers := \
include ../Makeconfig
-CFLAGS-lockfile.c = -D_IO_MTSAFE_IO
-
all: # Make this the default target; it will be defined in Rules.
subdir_install: $(inst_libdir)/libpthread2.a $(inst_libdir)/libpthread_syms.a
libc {
GLIBC_2.12 {
+ flockfile; ftrylockfile; funlockfile;
pthread_self;
__pthread_get_cleanup_stack;
__pthread_key_create;
libpthread {
GLIBC_2.2.6 {
- _IO_flockfile; _IO_ftrylockfile; _IO_funlockfile;
__errno_location; __h_errno_location;
}
GLIBC_2.12 {
- flockfile; ftrylockfile; funlockfile;
-
pthread_atfork;
pthread_create;
+++ /dev/null
-/* lockfile - Handle locking and unlocking of streams. Hurd pthread version.
- Copyright (C) 2000-2025 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- 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> /* Must come before <stdio.h>! */
-#include <stdio.h>
-
-#undef _IO_flockfile
-#undef _IO_funlockfile
-#undef _IO_ftrylockfile
-
-void
-_IO_flockfile (FILE *fp)
-{
- _IO_lock_lock (*fp->_lock);
-}
-
-void
-_IO_funlockfile (FILE *fp)
-{
- _IO_lock_unlock (*fp->_lock);
-}
-
-int
-_IO_ftrylockfile (FILE *fp)
-{
- return __libc_lock_trylock_recursive (*fp->_lock);
-}
-
-#undef flockfile
-#undef funlockfile
-#undef ftrylockfile
-
-void flockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_flockfile")));
-void funlockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_funlockfile")));
-int ftrylockfile (FILE *)
- __attribute__ ((weak, alias ("_IO_ftrylockfile")));
#if IS_IN (libpthread)
static const struct pthread_functions pthread_functions = {
- .ptr__IO_flockfile = _IO_flockfile,
- .ptr__IO_funlockfile = _IO_funlockfile,
- .ptr__IO_ftrylockfile = _IO_ftrylockfile,
};
#endif /* IS_IN (libpthread) */
__libc_message_wrapper (__libc_assert_vma_name, __VA_ARGS__)
/* Acquire ownership of STREAM. */
-extern void __flockfile (FILE *__stream) attribute_hidden;
+extern void __flockfile (FILE *__stream);
+libc_hidden_proto (__flockfile)
/* Relinquish the ownership granted for STREAM. */
-extern void __funlockfile (FILE *__stream) attribute_hidden;
+extern void __funlockfile (FILE *__stream);
+libc_hidden_proto (__funlockfile)
/* Try to acquire ownership of STREAM but do not block if it is not
possible. */
{
_IO_lock_lock (*stream->_lock);
}
+libc_hidden_def(__flockfile)
weak_alias (__flockfile, flockfile);
weak_alias (__flockfile, _IO_flockfile)
{
_IO_lock_unlock (*stream->_lock);
}
+libc_hidden_def(__funlockfile)
weak_alias (__funlockfile, _IO_funlockfile)
weak_alias (__funlockfile, funlockfile);
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-#include <libc-lockP.h>
+#include <stdio-lock.h>
void
__flockfile (FILE *stream)
{
-#ifdef SHARED
- __libc_ptf_call (_IO_flockfile, (stream), 0);
-#endif
+ _IO_lock_lock (*stream->_lock);
}
-weak_alias (__flockfile, _IO_flockfile)
-weak_alias (__flockfile, flockfile)
+libc_hidden_def(__flockfile)
+weak_alias (__flockfile, _IO_flockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __flockfile, flockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __flockfile, flockfile, GLIBC_2_12);
+# endif
+#else
+weak_alias (__flockfile, flockfile);
+#endif
<https://www.gnu.org/licenses/>. */
#include <stdio.h>
-#include <libc-lockP.h>
+#include <stdio-lock.h>
int
__ftrylockfile (FILE *stream)
{
-#ifdef SHARED
- return __libc_ptf_call (_IO_ftrylockfile, (stream), 0);
+ return _IO_lock_trylock (*stream->_lock);
+}
+weak_alias (__ftrylockfile, _IO_ftrylockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __ftrylockfile, ftrylockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __ftrylockfile, ftrylockfile, GLIBC_2_12);
+# endif
#else
- return 0;
+weak_alias (__ftrylockfile, ftrylockfile);
#endif
-}
-weak_alias (__ftrylockfile, _IO_ftrylockfile)
-weak_alias (__ftrylockfile, ftrylockfile)
void
__funlockfile (FILE *stream)
{
-#ifdef SHARED
- __libc_ptf_call (_IO_funlockfile, (stream), 0);
-#endif
+ _IO_lock_unlock (*stream->_lock);
}
-weak_alias (__funlockfile, _IO_funlockfile)
-weak_alias (__funlockfile, funlockfile)
+libc_hidden_def(__funlockfile)
+weak_alias (__funlockfile, _IO_funlockfile);
+#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_2_6, GLIBC_2_12)
+versioned_symbol (libc, __funlockfile, funlockfile, GLIBC_2_0);
+# if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_43)
+compat_symbol (libpthread, __funlockfile, funlockfile, GLIBC_2_12);
+# endif
+#else
+weak_alias (__funlockfile, funlockfile);
+#endif
so if possible avoid breaking it and append new hooks to the end. */
struct pthread_functions
{
- void (*ptr__IO_flockfile) (FILE *);
- void (*ptr__IO_funlockfile) (FILE *);
- int (*ptr__IO_ftrylockfile) (FILE *);
};
/* Variable in libc.so. */
GLIBC_2.12 __pthread_kill F
GLIBC_2.12 __pthread_mutex_transfer_np F
GLIBC_2.12 __pthread_self F
+GLIBC_2.12 flockfile F
+GLIBC_2.12 ftrylockfile F
+GLIBC_2.12 funlockfile F
GLIBC_2.12 pthread_attr_destroy F
GLIBC_2.12 pthread_attr_getdetachstate F
GLIBC_2.12 pthread_attr_getguardsize F
GLIBC_2.12 __pthread_spin_trylock F
GLIBC_2.12 __pthread_spin_unlock F
GLIBC_2.12 _pthread_spin_lock F
-GLIBC_2.12 flockfile F
-GLIBC_2.12 ftrylockfile F
-GLIBC_2.12 funlockfile F
GLIBC_2.12 pthread_atfork F
GLIBC_2.12 pthread_create F
GLIBC_2.12 pthread_spin_destroy F
GLIBC_2.12 pthread_spin_lock F
GLIBC_2.12 pthread_spin_trylock F
GLIBC_2.12 pthread_spin_unlock F
-GLIBC_2.2.6 _IO_flockfile F
-GLIBC_2.2.6 _IO_ftrylockfile F
-GLIBC_2.2.6 _IO_funlockfile F
GLIBC_2.2.6 __errno_location F
GLIBC_2.2.6 __h_errno_location F
GLIBC_2.21 pthread_hurd_cond_timedwait_np F
-GLIBC_2.38 _IO_flockfile F
-GLIBC_2.38 _IO_ftrylockfile F
-GLIBC_2.38 _IO_funlockfile F
GLIBC_2.38 __errno_location F
GLIBC_2.38 __h_errno_location F
GLIBC_2.38 __pthread_spin_destroy F
GLIBC_2.38 cnd_signal F
GLIBC_2.38 cnd_timedwait F
GLIBC_2.38 cnd_wait F
-GLIBC_2.38 flockfile F
-GLIBC_2.38 ftrylockfile F
-GLIBC_2.38 funlockfile F
GLIBC_2.38 mtx_destroy F
GLIBC_2.38 mtx_init F
GLIBC_2.38 mtx_lock F