diff options
Diffstat (limited to 'rt')
-rw-r--r-- | rt/Makefile | 4 | ||||
-rw-r--r-- | rt/Versions | 6 | ||||
-rw-r--r-- | rt/aio_write.c | 32 | ||||
-rw-r--r-- | rt/aio_write64.c | 22 |
4 files changed, 53 insertions, 11 deletions
diff --git a/rt/Makefile b/rt/Makefile index a373cd0..3d930d1 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -29,8 +29,6 @@ routines = \ shm_unlink \ librt-routines = \ - aio_write \ - aio_write64 \ librt-compat \ lio_listio \ lio_listio64 \ @@ -63,6 +61,8 @@ $(librt-routines-var) += \ aio_return \ aio_sigqueue \ aio_suspend \ + aio_write \ + aio_write64 \ tests := tst-shm tst-timer tst-timer2 \ tst-aio tst-aio64 tst-aio2 tst-aio3 tst-aio4 tst-aio5 tst-aio6 \ diff --git a/rt/Versions b/rt/Versions index d54b9cc..f2b4ced 100644 --- a/rt/Versions +++ b/rt/Versions @@ -14,6 +14,8 @@ libc { aio_return64; aio_suspend; aio_suspend64; + aio_write; + aio_write64; %endif } GLIBC_2.2 { @@ -35,6 +37,8 @@ libc { aio_return64; aio_suspend; aio_suspend64; + aio_write; + aio_write64; %endif shm_open; shm_unlink; @@ -69,9 +73,9 @@ librt { aio_return64; aio_suspend; aio_suspend64; -%endif aio_write; aio_write64; +%endif lio_listio; lio_listio64; } diff --git a/rt/aio_write.c b/rt/aio_write.c index ea55f0d..5cf7c67 100644 --- a/rt/aio_write.c +++ b/rt/aio_write.c @@ -17,14 +17,40 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <aio.h> +#include <bits/wordsize.h> +#if __WORDSIZE == 64 +# define aio_write64 XXX +# include <aio.h> +/* And undo the hack. */ +# undef aio_write64 +#else +# include <aio.h> +#endif #include <aio_misc.h> - +#include <shlib-compat.h> int -aio_write (struct aiocb *aiocbp) +__aio_write (struct aiocb *aiocbp) { return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE) == NULL ? -1 : 0); } + +#if PTHREAD_IN_LIBC +versioned_symbol (libc, __aio_write, aio_write, GLIBC_2_34); +# if __WORDSIZE == 64 +versioned_symbol (libc, __aio_write, aio_write64, GLIBC_2_34); +# endif +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34) +compat_symbol (librt, __aio_write, aio_write, GLIBC_2_1); +# if __WORDSIZE == 64 +compat_symbol (librt, __aio_write, aio_write64, GLIBC_2_1); +# endif +# endif +#else /* !PTHREAD_IN_LIBC */ +strong_alias (__aio_write, aio_write) +# if __WORDSIZE == 64 +weak_alias (__aio_write, aio_write64) +#endif +#endif /* !PTHREAD_IN_LIBC */ diff --git a/rt/aio_write64.c b/rt/aio_write64.c index bd6dd31..5660fa5 100644 --- a/rt/aio_write64.c +++ b/rt/aio_write64.c @@ -1,4 +1,4 @@ -/* Asynchronous write, 64bit offset version. +/* Asynchronous read, 64bit offset version. Copyright (C) 1997-2021 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. @@ -17,14 +17,26 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <aio.h> - -#include <aio_misc.h> +#include <bits/wordsize.h> +#if __WORDSIZE != 64 +# include <aio.h> +# include <aio_misc.h> +# include <shlib-compat.h> int -aio_write64 (struct aiocb64 *aiocbp) +__aio_write64 (struct aiocb64 *aiocbp) { return (__aio_enqueue_request ((aiocb_union *) aiocbp, LIO_WRITE64) == NULL ? -1 : 0); } + +# if PTHREAD_IN_LIBC +versioned_symbol (libc, __aio_write64, aio_write64, GLIBC_2_34); +# if OTHER_SHLIB_COMPAT (librt, GLIBC_2_1, GLIBC_2_34) +compat_symbol (librt, __aio_write64, aio_write64, GLIBC_2_1); +# endif +# else /* !PTHREAD_IN_LIBC */ +strong_alias (__aio_write64, aio_write64) +# endif +#endif /* __WORDSIZE != 64 */ |