mbox series

[0/6] System call table generation support

Message ID 1531736638-15294-1-git-send-email-firoz.khan@linaro.org
Headers show
Series System call table generation support | expand

Message

Firoz Khan July 16, 2018, 10:23 a.m. UTC
The goal of this patch series is to easily add/modify/delete a
system call by changing entry in syscall.tbl file. No need
to manually edit many files.

The another goal of this patch series is to to unify the system
call implementation across all the architectures. ARM, s390 and 
x86 architecuture does have the similar support. I leverage their 
implementation to come up with a generic solution.

I have done the same support for work for ia64, m68k, microblaze, 
mips, parisc, powerpc, sh, sparc, and xtensa. But I started sending 
the patch for one architecuture for review. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/

Finally, this is the ground work for solving the Y2038 issue. We 
need to change two dozen of system calls to solve Y2038 issue. So
this implementation will help to easily modify from existing system
call to Y2038 compatible system calls.

Firoz Khan (6):
  alpha: Move __IGNORE* entries to non uapi header
  alpha: Add CONFIG_OSF4_COMPAT for compat syscall support
  alpha: Unify the not-implemented system call entry name
  alpha: Replace NR_SYSCALLS macro from asm/unistd.h
  alpha: Add system call table generation support
  alpha: uapi header and system call table file generation

 arch/alpha/Makefile                      |   3 +
 arch/alpha/include/asm/Kbuild            |   3 +-
 arch/alpha/include/asm/unistd.h          |   7 +-
 arch/alpha/include/uapi/asm/Kbuild       |   2 +
 arch/alpha/include/uapi/asm/unistd.h     | 489 ---------------------------
 arch/alpha/kernel/Makefile               |   2 +-
 arch/alpha/kernel/entry.S                |   4 +-
 arch/alpha/kernel/osf_sys.c              |   9 +-
 arch/alpha/kernel/syscall.S              |  20 ++
 arch/alpha/kernel/syscalls/Makefile      |  37 +++
 arch/alpha/kernel/syscalls/syscall.tbl   | 450 +++++++++++++++++++++++++
 arch/alpha/kernel/syscalls/syscallhdr.sh |  33 ++
 arch/alpha/kernel/syscalls/syscalltbl.sh |  28 ++
 arch/alpha/kernel/systbls.S              | 552 -------------------------------
 14 files changed, 589 insertions(+), 1050 deletions(-)
 delete mode 100644 arch/alpha/include/uapi/asm/unistd.h
 create mode 100644 arch/alpha/kernel/syscall.S
 create mode 100644 arch/alpha/kernel/syscalls/Makefile
 create mode 100644 arch/alpha/kernel/syscalls/syscall.tbl
 create mode 100644 arch/alpha/kernel/syscalls/syscallhdr.sh
 create mode 100644 arch/alpha/kernel/syscalls/syscalltbl.sh
 delete mode 100644 arch/alpha/kernel/systbls.S

-- 
2.7.4

Comments

Arnd Bergmann July 16, 2018, 2:09 p.m. UTC | #1
On Mon, Jul 16, 2018 at 12:23 PM, Firoz Khan <firoz.khan@linaro.org> wrote:
> The goal of this patch series is to easily add/modify/delete a

> system call by changing entry in syscall.tbl file. No need

> to manually edit many files.

>

> The another goal of this patch series is to to unify the system

> call implementation across all the architectures. ARM, s390 and

> x86 architecuture does have the similar support. I leverage their

> implementation to come up with a generic solution.

>

> I have done the same support for work for ia64, m68k, microblaze,

> mips, parisc, powerpc, sh, sparc, and xtensa. But I started sending

> the patch for one architecuture for review. Below mentioned git

> repository contains more details.

> Git repo:- https://github.com/frzkhn/system_call_table_generator/

>

> Finally, this is the ground work for solving the Y2038 issue. We

> need to change two dozen of system calls to solve Y2038 issue. So

> this implementation will help to easily modify from existing system

> call to Y2038 compatible system calls.


Thanks a lot Firoz for getting this started!

(adding Marcin to Cc)

I think doing this for all architectures will help in a number of ways.
As we need to do a relatively complex conversion for the system
calls for y2038 support (changing old calls into compat ones,
and adding the new ones at the end), this will give us some
confidence.

I also hope that this makes scripting easier when we can check
which calls are implemented on which architecture, and maybe get
to a common baseline again by adding the missing calls on
all architectures that are rarely updated, now that we have thrown
out the architectures that were simply unmaintained. (looking
at the syscall table used to be a good way to see how well
maintained an architecture is). Once the y2038 calls are added,
glibc and others will have to set a new minimum version of kernel
headers (e.g. changing from linux-3.2 to 4.20) to get the new calls,
and that at that time, it would be great to have all the recently
added calls available on all architectures, so a future glibc version
that takes linux-4.20 as the minimum runtime version doesn't have
to emulate those calls through older ones. In particular, this
would be helpful for the new mount() API and the rseq() call that
have recently been added.

We might run into a few problems on architectures while we
transition to generated tables at the same as as adding new
calls, we'll have to see how to deal with that.

      Arnd