This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 0/4] Cancellation entrypoint refactor


These patches are a subset of a larger patchset I am working with the
aim to both simplify both syscall cancellation entrypoints and its
definition.

The main aim is to remove the requirement of assembly macros definition
on syscall-cancel.h and instead use C code through SYSCALL_CANCEL
macro.  This both simplify a new port creation by removing arch-specific
code requirements and also make easier to adjust current ports to the
new cancellation mechanism.

To accomplish it the idea is remove all the syscall cancellation auto
generation through syscalls.list and remove all the multiple syscall
definition across multiple ports.  So for all the cancellation
entrypoints for linux will ending have a single C implementation on
sysdep/unix/sysv/linux.

The first patch add the __ASSUME_ALIGNED_REGISTER_PAIRS on the missing
architectures that have the ABI constraint but does not define it.  
Second patch adds a new macro to use along long long syscalls arguments
for 32-bits to currect split it 2 arguments.  The third and last patch
use these new macros to consolidate the pread and pwrite syscall
definition in only one implementation.

Changes from previous version:

* Moved SYSCALL_LL{64} definition to the common sysdep.h Linux header.
  For ILP32 ports with 64-bit kernel interfaces (currently x86_64 x32
  and mips64 n32) a new define is set (__ASSUME_WORDSIZE64_ILP32) to
  explicit set these ports do not require 64-bit adjustments.

* Fixed SH issue with due its requirement of a dummy argument before
  the offset (the ABI itself does not require __ASSUME_ALIGNED_REGISTER_PAIRS).

Adhemerval Zanella (4):
  Define __ASSUME_ALIGNED_REGISTER_PAIRS for missing ports
  Consolidate off_t/off64_t syscall argument passing
  Consolidate pread/pread64 implementations
  Consolidate pwrite/pwrite64 implementations

 ChangeLog                                          | 85 ++++++++++++++++++++++
 sysdeps/unix/sysv/linux/alpha/sysdep.h             |  1 +
 sysdeps/unix/sysv/linux/arm/kernel-features.h      |  4 +
 sysdeps/unix/sysv/linux/arm/pread.c                | 36 ---------
 sysdeps/unix/sysv/linux/arm/pread64.c              | 37 ----------
 sysdeps/unix/sysv/linux/arm/pwrite.c               | 36 ---------
 sysdeps/unix/sysv/linux/arm/pwrite64.c             | 38 ----------
 sysdeps/unix/sysv/linux/arm/sysdep.h               |  1 +
 sysdeps/unix/sysv/linux/generic/sysdep.h           | 13 ++++
 .../unix/sysv/linux/generic/wordsize-32/pread.c    | 37 ----------
 .../unix/sysv/linux/generic/wordsize-32/pread64.c  | 34 ---------
 .../unix/sysv/linux/generic/wordsize-32/pwrite.c   | 36 ---------
 .../unix/sysv/linux/generic/wordsize-32/pwrite64.c | 35 ---------
 sysdeps/unix/sysv/linux/hppa/sysdep.h              |  1 +
 sysdeps/unix/sysv/linux/i386/sysdep.h              |  1 +
 sysdeps/unix/sysv/linux/ia64/sysdep.h              |  1 +
 sysdeps/unix/sysv/linux/m68k/sysdep.h              |  1 +
 sysdeps/unix/sysv/linux/microblaze/sysdep.h        |  1 +
 sysdeps/unix/sysv/linux/mips/kernel-features.h     | 12 +++
 sysdeps/unix/sysv/linux/mips/mips32/sysdep.h       |  1 +
 sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h   |  1 +
 sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h   |  1 +
 sysdeps/unix/sysv/linux/mips/pread.c               | 54 --------------
 sysdeps/unix/sysv/linux/mips/pread64.c             | 50 -------------
 sysdeps/unix/sysv/linux/mips/pwrite.c              | 54 --------------
 sysdeps/unix/sysv/linux/mips/pwrite64.c            | 51 -------------
 sysdeps/unix/sysv/linux/powerpc/kernel-features.h  |  6 ++
 sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c  | 34 ---------
 .../unix/sysv/linux/powerpc/powerpc32/pread64.c    | 35 ---------
 sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c | 35 ---------
 .../unix/sysv/linux/powerpc/powerpc32/pwrite64.c   | 36 ---------
 sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h | 19 +----
 sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h | 19 +----
 sysdeps/unix/sysv/linux/pread.c                    | 20 +----
 sysdeps/unix/sysv/linux/pread64.c                  | 17 +----
 sysdeps/unix/sysv/linux/pwrite.c                   | 20 +----
 sysdeps/unix/sysv/linux/pwrite64.c                 | 17 +----
 sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h      |  1 +
 sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h      |  1 +
 sysdeps/unix/sysv/linux/sh/pread.c                 | 30 ++------
 sysdeps/unix/sysv/linux/sh/pread64.c               | 30 ++------
 sysdeps/unix/sysv/linux/sh/pwrite.c                | 30 ++------
 sysdeps/unix/sysv/linux/sh/pwrite64.c              | 31 ++------
 sysdeps/unix/sysv/linux/sh/sysdep.h                |  1 +
 sysdeps/unix/sysv/linux/sparc/sysdep.h             |  1 +
 sysdeps/unix/sysv/linux/wordsize-64/pread64.c      |  1 -
 sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c     |  1 -
 sysdeps/unix/sysv/linux/wordsize-64/syscalls.list  |  2 -
 sysdeps/unix/sysv/linux/x86_64/kernel-features.h   |  6 ++
 sysdeps/unix/sysv/linux/x86_64/sysdep.h            |  1 +
 50 files changed, 177 insertions(+), 839 deletions(-)
 delete mode 100644 sysdeps/unix/sysv/linux/arm/pread.c
 delete mode 100644 sysdeps/unix/sysv/linux/arm/pread64.c
 delete mode 100644 sysdeps/unix/sysv/linux/arm/pwrite.c
 delete mode 100644 sysdeps/unix/sysv/linux/arm/pwrite64.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pread.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pread64.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite.c
 delete mode 100644 sysdeps/unix/sysv/linux/generic/wordsize-32/pwrite64.c
 delete mode 100644 sysdeps/unix/sysv/linux/mips/pread.c
 delete mode 100644 sysdeps/unix/sysv/linux/mips/pread64.c
 delete mode 100644 sysdeps/unix/sysv/linux/mips/pwrite.c
 delete mode 100644 sysdeps/unix/sysv/linux/mips/pwrite64.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pread.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pread64.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite.c
 delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/pwrite64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/pread64.c
 delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/pwrite64.c

-- 
1.9.1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]