Skip to content

RFC Signal: harmonize syscall restart logic

Jonas Bonn linux-arch linux-ia64 linux-m68k linux-mips lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest8 patches 6 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/8signal: introduce generic syscall restart logicinclude/asm-generic/syscall.h include/linux/signal.h kernel/signal.c+119 -20 replies
2/8blackfin: implement syscall restart genericallyarch/blackfin/include/asm/syscall.h arch/blackfin/kernel/signal.c+27 -463 replies
3/8frv: implement syscall restart genericallyarch/frv/include/asm/syscall.h arch/frv/kernel/signal.c+25 -460 replies
4/8mips: implement syscall restart genericallyarch/mips/include/asm/syscall.h arch/mips/kernel/signal.c+94 -372 replies
5/8x86: implement syscall restart genericallyarch/x86/include/asm/syscall.h arch/x86/kernel/signal.c+24 -400 replies
6/8m68k: implement syscall restart genericallyarch/m68k/include/asm/syscall.h arch/m68k/kernel/signal_mm.c arch/m68k/kernel/signal_no.c+93 -850 replies
6/8m68k: implement syscall restart genericallyarch/m68k/include/asm/syscall.h arch/m68k/kernel/signal_mm.c arch/m68k/kernel/signal_no.c+93 -850 replies
7/8ia64: implement syscall restart genericallyarch/ia64/include/asm/syscall.h arch/ia64/kernel/signal.c+22 -530 replies
8/8tile: implement syscall restart genericallyarch/tile/include/asm/syscall.h arch/tile/kernel/signal.c+31 -491 reply

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [PATCH RFC 0/8] Signal: harmonize syscall restart logic

I've been looking into trying to harmonize the architecture specific signal handling code. With a couple of helper functions to mask some of the architecture specific bits, the code for do_signal and handle_signal (implemented by essentially everybody) start to look identical across all arch's and could likely be made generic.

The big helper is the one in this series. This one moves the syscall restart logic out to a common helper. The arch specific bit here is the register manipulations required to actually effect the restart; this patch series moves those manipulations to the asm/syscall.h header which already attempts to define a generic syscall interface for several arch's today.

Where this series remains an RFC is due to a couple of open questions:

i) ARM (and a few arch's copied from it) does its restart logic in two steps so that a debugger can intervene; is there still value in this approach or would the single step approach in this patch series be sufficient for ARM (and others)?

ii) The syscall.h interface requires that the information needed to do
the register manipulations be in the pt_regs struct. This isn't the case for all arch's today. Are there any issues with putting that info into pt_regs for those arch's?

With the rest of the cleanups in this series it currently comes to 64 patches, so I'm just posting a couple of the syscall restart patches now for comment in order not to flood the lists. I'll post the remainder of the series later based on the feedback from this series.

/Jonas

Jonas Bonn (8):
signal: introduce generic syscall restart logic
blackfin: implement syscall restart generically
frv: implement syscall restart generically
mips: implement syscall restart generically
x86: implement syscall restart generically
m68k: implement syscall restart generically
ia64: implement syscall restart generically
tile: implement syscall restart generically

 arch/blackfin/include/asm/syscall.h |   26 +++++++++-
 arch/blackfin/kernel/signal.c       |   47 +-----------------
 arch/frv/include/asm/syscall.h      |   23 ++++++++-
 arch/frv/kernel/signal.c            |   48 +-----------------
 arch/ia64/include/asm/syscall.h     |   21 ++++++++
 arch/ia64/kernel/signal.c           |   54 +--------------------
 arch/m68k/include/asm/syscall.h     |   87 +++++++++++++++++++++++++++++++++
 arch/m68k/kernel/signal_mm.c        |   45 +----------------
 arch/m68k/kernel/signal_no.c        |   46 +----------------
 arch/mips/include/asm/syscall.h     |   91 +++++++++++++++++++++++++++++++++++
 arch/mips/kernel/signal.c           |   40 +--------------
 arch/tile/include/asm/syscall.h     |   28 ++++++++++-
 arch/tile/kernel/signal.c           |   52 ++------------------
 arch/x86/include/asm/syscall.h      |   21 ++++++++
 arch/x86/kernel/signal.c            |   43 +---------------
 include/asm-generic/syscall.h       |   46 +++++++++++++++++-
 include/linux/signal.h              |    3 +
 kernel/signal.c                     |   72 +++++++++++++++++++++++++++-
 18 files changed, 435 insertions(+), 358 deletions(-)
 create mode 100644 arch/m68k/include/asm/syscall.h
 create mode 100644 arch/mips/include/asm/syscall.h
Signature · 1 line
1.7.5.4