|
With internal fcntl64 internal (commit 06ab719d), it is possible to
consolidate lockf implementation by using the LFS fcntl interface
instead of using arch and system-specific implementations.
For Linux, the i386 implementation is used as generic implementation
by replacing the direct syscall with fcntl64 call. The LFS symbol
alias for default LFS ABI (__OFF_T_MATCHES_OFF64_T) is used to avoid
the duplicate symbol (instead of overriding the implementation with an
empty file).
For Hurd lockf64 semantic is changed: previous generic lockf64
implementation returned EOVERFLOW if LEN input is larger than 32-bit
off_t. However, Hurd fcntl64 implementation for F_GETLK64, F_SETLK64,
and F_SETLKW64 do accept off64_t inputs (__f_setlk accepts only off64_t
inputs).
Checked on i686-linux-gnu and x86_64-linux-gnu along with a i686-gnu
build.
* io/Makefile (tests): Add tst-lockf.
* io/lockf.c (lockf): Use __fcntl and only define for
!__OFF_T_MATCHES_OFF64_T.
* io/lockf64.c (__lockf64): Call __fcntl64 and alias to lockf for
__OFF_T_MATCHES_OFF64_T case.
* io/tst-lockf.c: New file.
* sysdeps/unix/sysv/linux/i386/lockf64.c: Remove file.
* sysdeps/unix/sysv/linux/arm/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/sh/lockf64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/lockf64.c: Likewise.
|
|
* sysdeps/unix/sysv/linux/m68k/fcntl.c: New file.
* sysdeps/unix/sysv/linux/m68k/getdents64.c: New file.
* sysdeps/unix/sysv/linux/m68k/getrlimit.c: New file.
* sysdeps/unix/sysv/linux/m68k/getrlimit64.c: New file.
* sysdeps/unix/sysv/linux/m68k/glob64.c: New file.
* sysdeps/unix/sysv/linux/m68k/lockf64.c: New file.
* sysdeps/unix/sysv/linux/m68k/oldgetrlimit64.c: New file.
* sysdeps/unix/sysv/linux/m68k/readdir64.c: New file.
* sysdeps/unix/sysv/linux/m68k/readdir64_r.c: New file.
* sysdeps/unix/sysv/linux/m68k/scandir64.c: New file.
* sysdeps/unix/sysv/linux/m68k/setrlimit.c: New file.
* sysdeps/unix/sysv/linux/m68k/versionsort64.c: New file.
* sysdeps/unix/sysv/linux/m68k/Dist: Add oldgetrlimit64.c.
* sysdeps/unix/sysv/linux/m68k/Makefile: Add oldgetrlimit64.
* sysdeps/unix/sysv/linux/m68k/Versions: Export __xstat64,
__fxstat64, __lxstat64, alphasort64, glob64, getrlimit, setrlimit,
getrlimit64, readdir64, readdir64_r, scandir64, versionsort64 at
GLIBC_2.2.
* sysdeps/unix/sysv/linux/m68k/syscalls.list: Add oldgetrlimit,
oldsetrlimit for GLIBC_2.0.
|