The test helps to validate clamping and mount behaviors
according to supported file system timestamp ranges.
Note that the test can fail on 32-bit systems for a
few file systems. This will be corrected when vfs is
transitioned to use 64-bit timestamps.
Signed-off-by: Deepa Dinamani <deepa.kernel(a)gmail.com>
---
The branch of the kernel tree can be located at
https://github.com/deepa-hub/vfs refs/heads/vfs_timestamp_policy
The xfs_io patch to add utimes is at
https://www.spinics.net/lists/linux-xfs/msg02952.html
Changes since v2:
* Refactored notrun handling
* Updated comments
Changes since v1:
* Use xfs_io utimes command
* Updated error handling
* Reorganized code according to review comments
common/rc | 48 +++++++++++++
tests/generic/390 | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++
tests/generic/390.out | 2 +
tests/generic/group | 1 +
4 files changed, 243 insertions(+)
create mode 100755 tests/generic/390
create mode 100644 tests/generic/390.out
diff --git a/common/rc b/common/rc
index e3b54ec..17f025e 100644
--- a/common/rc
+++ b/common/rc
@@ -1960,6 +1960,51 @@ _run_aiodio()
return $status
}
+# this test requires y2038 sysfs switch and filesystem
+# timestamp ranges support.
+_require_y2038()
+{
+ local device=${1:-$TEST_DEV}
+ local sysfsdir=/proc/sys/fs/fs-timestamp-check-on
+
+ if [ ! -e $sysfsdir ]; then
+ _notrun "no kernel support for y2038 sysfs switch"
+ fi
+
+ local tsmin tsmax
+ read tsmin tsmax <<<$(_filesystem_timestamp_range $device)
+ if [ $tsmin -eq -1 -a $tsmax -eq -1 ]; then
+ _notrun "filesystem $FSTYP timestamp bounds are unknown"
+ fi
+}
+
+_filesystem_timestamp_range()
+{
+ device=${1:-$TEST_DEV}
+ case $FSTYP in
+ ext4)
+ if [ $(dumpe2fs -h $device 2>/dev/null | grep "Inode size:" | cut -d: -f2) -gt 128 ]; then
+ echo "-2147483648 15032385535"
+ else
+ echo "-2147483648 2147483647"
+ fi
+ ;;
+
+ xfs)
+ echo "-2147483648 2147483647"
+ ;;
+ jfs)
+ echo "0 4294967295"
+ ;;
+ f2fs)
+ echo "-2147483648 2147483647"
+ ;;
+ *)
+ echo "-1 -1"
+ ;;
+ esac
+}
+
# indicate whether YP/NIS is active or not
#
_yp_active()
@@ -2070,6 +2115,9 @@ _require_xfs_io_command()
echo $testio | egrep -q "Inappropriate ioctl" && \
_notrun "xfs_io $command support is missing"
;;
+ "utimes" )
+ testio=`$XFS_IO_PROG -f -c "utimes" 0 0 0 0 $testfile 2>&1`
+ ;;
*)
testio=`$XFS_IO_PROG -c "$command help" 2>&1`
esac
diff --git a/tests/generic/390 b/tests/generic/390
new file mode 100755
index 0000000..f68b931
--- /dev/null
+++ b/tests/generic/390
@@ -0,0 +1,192 @@
+#! /bin/bash
+# FS QA Test 390
+#
+# Tests to verify policy for filesystem timestamps for
+# supported ranges:
+# 1. Verify filesystem rw mount according to sysctl
+# timestamp_supported.
+# 2. Verify timestamp clamping for timestamps beyond max
+# timestamp supported.
+#
+# Exit status 1: either or both tests above fail.
+# Exit status 0: both the above tests pass.
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2016 Deepa Dinamani. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+#-----------------------------------------------------------------------
+#
+
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "exit \$status" 0 1 2 3 15
+
+# Get standard environment, filters and checks.
+. ./common/rc
+. ./common/filter
+. ./common/attr
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+# Prerequisites for the test run.
+_supported_fs generic
+_supported_os Linux
+_require_scratch
+_require_xfs_io_command utimes
+
+# Compare file timestamps obtained from stat
+# with a given timestamp.
+check_stat()
+{
+ file=$1
+ timestamp=$2
+
+ stat_timestamp=`stat -c"%X;%Y" $file`
+
+ prev_timestamp="$timestamp;$timestamp"
+ if [ $prev_timestamp != $stat_timestamp ]; then
+ echo "$prev_timestamp != $stat_timestamp" | tee -a $seqres.full
+ fi
+}
+
+run_test_individual()
+{
+ file=$1
+ timestamp=$2
+ update_time=$3
+
+ #check if the time needs update
+ if [ $update_time -eq 1 ]; then
+ echo "Updating file: $file to timestamp `date -d @$timestamp`" >> $seqres.full
+ $XFS_IO_PROG -f -c "utimes $timestamp 0 $timestamp 0" $file
+ if [ $? -ne 0 ]; then
+ echo "Failed to update times on $file" | tee -a $seqres.full
+ fi
+ fi
+
+ tsclamp=$(($timestamp>$tsmax?$tsmax:$timestamp))
+ echo "Checking file: $file Updated timestamp is `date -d @$tsclamp`" >> $seqres.full
+ check_stat $file $tsclamp
+}
+
+run_test()
+{
+ update_time=$1
+
+ n=1
+
+ for TIME in "${TIMESTAMPS[@]}"
+ do
+ #Run the test
+ run_test_individual ${SCRATCH_MNT}/test_$n $TIME $update_time
+
+ #update iterator
+ ((n++))
+ done
+}
+
+_scratch_mkfs &>> $seqres.full 2>&1 || _fail "mkfs failed"
+_require_y2038 $SCRATCH_DEV
+
+read tsmin tsmax <<<$(_filesystem_timestamp_range $SCRATCH_DEV)
+echo min supported timestamp $tsmin $(date --date=@$tsmin) >> $seqres.full
+echo max supported timestamp $tsmax $(date --date=@$tsmax) >> $seqres.full
+
+# Test timestamps array
+
+declare -a TIMESTAMPS=(
+ $tsmin
+ 0
+ $tsmax
+ $((tsmax+1))
+ 4294967295
+ 8589934591
+ 34359738367
+)
+
+# Max timestamp is hardcoded to Mon Jan 18 19:14:07 PST 2038
+sys_tsmax=2147483647
+echo "max timestamp that needs to be supported by fs for rw mount is" \
+ "$((sys_tsmax+1)) $(date --date=@$((sys_tsmax+1)))" >> $seqres.full
+
+read ts_check <<<$(cat /proc/sys/fs/fs-timestamp-check-on)
+
+_scratch_mount
+result=$?
+
+if [ $ts_check -ne 0 ]; then
+ echo "sysctl filesystem timestamp check is on" >> $seqres.full
+ # check for mount failure if the minimum requirement for max timestamp
+ # supported is not met.
+ if [ $sys_tsmax -ge $tsmax ]; then
+ if [ $result -eq 0 ]; then
+ echo "mount test failed" | tee -a $seqres.full
+ exit
+ fi
+ else
+ if [ $result -ne 0 ]; then
+ echo "failed to mount $SCRATCH_DEV" | tee -a $seqres.full
+ exit
+ fi
+ fi
+else
+ # if sysctl switch is off then mount should succeed always.
+ echo "sysctl filesystem timestamp check is off" >> $seqres.full
+ if [ $result -ne 0 ]; then
+ echo "failed to mount $SCRATCH_DEV and timestamp check is off" >> $seqres.full
+ exit
+ fi
+fi
+
+# Begin test case 1
+echo "In memory timestamps update test start" >> $seqres.full
+
+# update time on the file
+update_time=1
+
+run_test $update_time
+
+echo "In memory timestamps update complete" >> $seqres.full
+
+echo "Unmounting and mounting scratch $SCRATCH_MNT" >> $seqres.full
+
+# unmount and remount $SCRATCH_DEV
+_scratch_cycle_mount
+
+# Begin test case 2
+
+n=1
+
+# Do not update time on the file this time, just read from disk
+update_time=0
+
+echo "On disk timestamps update test start" >> $seqres.full
+
+# Re-run test
+run_test $update_time
+
+echo "On disk timestamps update test complete" >> $seqres.full
+
+echo "y2038 inode timestamp tests completed successfully"
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/390.out b/tests/generic/390.out
new file mode 100644
index 0000000..82bd4eb
--- /dev/null
+++ b/tests/generic/390.out
@@ -0,0 +1,2 @@
+QA output created by 390
+y2038 inode timestamp tests completed successfully
diff --git a/tests/generic/group b/tests/generic/group
index 08007d7..d137d01 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -392,3 +392,4 @@
387 auto clone
388 auto log metadata
389 auto quick acl
+390 auto quick rw
--
2.7.4
The series transitions the ppoll, io_getevents, and pselect syscalls
to be y2038 safe.
This is part of the work proceeding for syscalls for y2038.
It is based on the series [1] from Arnd Bergmann.
The overview of the series is as below:
1. Refactor sigmask handling logic for the above syscalls.
2. Provide y2038 safe versions of the syscalls for all ABIs.
[1] https://lkml.org/lkml/2018/8/27/651
Changes since v3:
* fixed pselect copy+paste error
Changes since v2:
* remove 64BIT_TIME conditional for ppoll, pselect,
io_getpevents as per review comments
Changes since v1:
* fixed bug pointed out by arnd
Deepa Dinamani (5):
signal: Add set_user_sigmask()
signal: Add restore_user_sigmask()
ppoll: use __kernel_timespec
pselect6: use __kernel_timespec
io_pgetevents: use __kernel_timespec
fs/aio.c | 134 ++++++++++-----
fs/eventpoll.c | 52 +-----
fs/select.c | 360 ++++++++++++++++++++++-----------------
include/linux/compat.h | 20 +++
include/linux/signal.h | 4 +
include/linux/syscalls.h | 20 ++-
kernel/signal.c | 78 +++++++++
7 files changed, 426 insertions(+), 242 deletions(-)
--
2.17.1
The purpose of this patch series is:
1. We can easily add/modify/delete system call by changing entry
in syscall.tbl file. No need to manually edit many files.
2. It is easy to unify the system call implementation across all
the architectures.
The system call tables are in different format in all architecture
and it will be difficult to manually add or modify the system calls
in the respective files manually. To make it easy by keeping a script
and which'll generate the header file and syscall table file so this
change will unify them across all architectures.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
- Compat entry name, if required.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, m68k, microblaze,
ia64, mips, parisc, 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 add/change two dozen of system calls to solve Y2038 issue.
So this patch series will help to easily modify from existing
system call to Y2038 compatible system calls.
I started working system call table generation on 4.17-rc1. I used
marcin's script - https://github.com/hrw/syscalls-table to generate
the syscall.tbl file. And this will be the input to the system call
table generation script. But there are couple system call got add
in the latest rc release. If run Marcin's script on latest release,
It will generate a new syscall.tbl. But I still use the old file -
syscall.tbl and once all review got over I'll update syscall.tbl
alone w.r.to the tip of the kernel. The impact of this thing, few
of the system call won't work.
Firoz Khan (3):
powerpc: Replace NR_syscalls macro from asm/unistd.h
powerpc: Add system call table generation support
powerpc: uapi header and system call table file generation
arch/powerpc/Makefile | 3 +
arch/powerpc/include/asm/Kbuild | 3 +
arch/powerpc/include/asm/unistd.h | 3 +-
arch/powerpc/include/uapi/asm/Kbuild | 2 +
arch/powerpc/include/uapi/asm/unistd.h | 391 +---------------------------
arch/powerpc/kernel/Makefile | 3 +-
arch/powerpc/kernel/syscall_table_32.S | 9 +
arch/powerpc/kernel/syscall_table_64.S | 17 ++
arch/powerpc/kernel/syscalls/Makefile | 51 ++++
arch/powerpc/kernel/syscalls/syscall_32.tbl | 378 +++++++++++++++++++++++++++
arch/powerpc/kernel/syscalls/syscall_64.tbl | 372 ++++++++++++++++++++++++++
arch/powerpc/kernel/syscalls/syscallhdr.sh | 37 +++
arch/powerpc/kernel/syscalls/syscalltbl.sh | 38 +++
arch/powerpc/kernel/systbl.S | 50 ----
14 files changed, 916 insertions(+), 441 deletions(-)
create mode 100644 arch/powerpc/kernel/syscall_table_32.S
create mode 100644 arch/powerpc/kernel/syscall_table_64.S
create mode 100644 arch/powerpc/kernel/syscalls/Makefile
create mode 100644 arch/powerpc/kernel/syscalls/syscall_32.tbl
create mode 100644 arch/powerpc/kernel/syscalls/syscall_64.tbl
create mode 100644 arch/powerpc/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/powerpc/kernel/syscalls/syscalltbl.sh
delete mode 100644 arch/powerpc/kernel/systbl.S
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture.
It will be difficult to manually add, modify or delete the system
calls in the respective files manually. To make it easy by keeping
a script and which'll generate uapi header file and syscall table
file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, ia64, microblaze,
mips, parisc, powerpc, sh, sparc, and xtensa. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/
Finally, this is the ground work to solve the Y2038 issue. We need
to add two dozen of system calls to solve Y2038 issue. So this patch
series will help to add new system calls easily by adding new entry
in the syscall.tbl.
Firoz Khan (4):
m68k: rename system call table file name
m68k: add __NR_syscalls along with NR_syscalls
m68k: add system call table generation support
m68k: generate uapi header and syscall table header files
arch/m68k/Makefile | 3 +
arch/m68k/include/asm/Kbuild | 1 +
arch/m68k/include/asm/unistd.h | 3 +-
arch/m68k/include/uapi/asm/Kbuild | 1 +
arch/m68k/include/uapi/asm/unistd.h | 385 +-----------------------------
arch/m68k/kernel/Makefile | 2 +-
arch/m68k/kernel/syscall_table.S | 26 +++
arch/m68k/kernel/syscalls/Makefile | 38 +++
arch/m68k/kernel/syscalls/syscall.tbl | 389 ++++++++++++++++++++++++++++++
arch/m68k/kernel/syscalls/syscallhdr.sh | 36 +++
arch/m68k/kernel/syscalls/syscalltbl.sh | 32 +++
arch/m68k/kernel/syscalltable.S | 403 --------------------------------
12 files changed, 529 insertions(+), 790 deletions(-)
create mode 100644 arch/m68k/kernel/syscall_table.S
create mode 100644 arch/m68k/kernel/syscalls/Makefile
create mode 100644 arch/m68k/kernel/syscalls/syscall.tbl
create mode 100644 arch/m68k/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/m68k/kernel/syscalls/syscalltbl.sh
delete mode 100644 arch/m68k/kernel/syscalltable.S
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture.
It will be difficult to manually add, modify or delete the system
calls in the respective files manually. To make it easy by keeping
a script and which'll generate uapi header file and syscall table
file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, m68k, microblaze,
mips, parisc, powerpc, sh, sparc, and xtensa. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/
Finally, this is the ground work to solve the Y2038 issue. We need
to add two dozen of system calls to solve Y2038 issue. So this patch
series will help to add new system calls easily by adding new entry
in the syscall.tbl.
Firoz Khan (5):
ia64: add __NR_old_getpagesize in uapi header file
ia64: add __NR_syscalls along with NR_syscalls
ia64: add an offset for system call number
ia64: add system call table generation support
ia64: generate uapi header and system call table files
arch/ia64/Makefile | 3 +
arch/ia64/include/asm/Kbuild | 1 +
arch/ia64/include/asm/unistd.h | 4 +-
arch/ia64/include/uapi/asm/Kbuild | 1 +
arch/ia64/include/uapi/asm/unistd.h | 332 +------------------------------
arch/ia64/kernel/entry.S | 331 +------------------------------
arch/ia64/kernel/syscalls/Makefile | 40 ++++
arch/ia64/kernel/syscalls/syscall.tbl | 337 ++++++++++++++++++++++++++++++++
arch/ia64/kernel/syscalls/syscallhdr.sh | 36 ++++
arch/ia64/kernel/syscalls/syscalltbl.sh | 32 +++
10 files changed, 457 insertions(+), 660 deletions(-)
create mode 100644 arch/ia64/kernel/syscalls/Makefile
create mode 100644 arch/ia64/kernel/syscalls/syscall.tbl
create mode 100644 arch/ia64/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/ia64/kernel/syscalls/syscalltbl.sh
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture.
It will be difficult to manually add, modify or delete the system
calls in the respective files manually. To make it easy by keeping
a script and which'll generate uapi header file and syscall table
file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
- Compat entry name, if required.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, ia64, m68k, micro-
blaze, mips, powerpc, sh, sparc, and xtensa. Below mentioned git
repository contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/
Finally, this is the ground work to solve the Y2038 issue. We need
to add two dozen of system calls to solve Y2038 issue. So this patch
series will help to add new system calls easily by adding new entry
in the syscall.tbl.
Firoz Khan (5):
parisc: move __IGNORE* entries to non uapi header
parisc: add __NR_syscalls along with __NR_Linux_syscalls
parisc: add system call table generation support
parisc: generate uapi header and system call table files
parisc: syscalls: ignore nfsservctl for other architectures
arch/parisc/Makefile | 4 +
arch/parisc/include/asm/Kbuild | 3 +
arch/parisc/include/asm/unistd.h | 8 +
arch/parisc/include/uapi/asm/Kbuild | 2 +
arch/parisc/include/uapi/asm/unistd.h | 382 +------------------------
arch/parisc/kernel/syscall.S | 11 +-
arch/parisc/kernel/syscall_table.S | 459 ------------------------------
arch/parisc/kernel/syscalls/Makefile | 57 ++++
arch/parisc/kernel/syscalls/syscall.tbl | 369 ++++++++++++++++++++++++
arch/parisc/kernel/syscalls/syscallhdr.sh | 36 +++
arch/parisc/kernel/syscalls/syscalltbl.sh | 36 +++
scripts/checksyscalls.sh | 1 +
12 files changed, 532 insertions(+), 836 deletions(-)
delete mode 100644 arch/parisc/kernel/syscall_table.S
create mode 100644 arch/parisc/kernel/syscalls/Makefile
create mode 100644 arch/parisc/kernel/syscalls/syscall.tbl
create mode 100644 arch/parisc/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/parisc/kernel/syscalls/syscalltbl.sh
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture.
It will be difficult to manually add, modify or delete the system
calls in the respective files manually. To make it easy by keeping
a script and which'll generate uapi header file and syscall table
file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, ia64, m68k, mips,
parisc, powerpc, sh, sparc, and xtensa. Below mentioned git repos-
itory contains more details.
Git repo:- https://github.com/frzkhn/system_call_table_generator/
Finally, this is the ground work to solve the Y2038 issue. We need
to add two dozen of system calls to solve Y2038 issue. So this patch
series will help to add new system calls easily by adding new entry
in the syscall.tbl.
Firoz Khan (3):
microblaze: move __NR_syscalls macro from asm/unistd.h
microblaze: add system call table generation support
microblaze: generate uapi header and system call table files
arch/microblaze/Makefile | 3 +
arch/microblaze/include/asm/Kbuild | 1 +
arch/microblaze/include/asm/unistd.h | 2 -
arch/microblaze/include/uapi/asm/Kbuild | 1 +
arch/microblaze/include/uapi/asm/unistd.h | 407 +------------------------
arch/microblaze/kernel/syscall_table.S | 406 +------------------------
arch/microblaze/kernel/syscalls/Makefile | 38 +++
arch/microblaze/kernel/syscalls/syscall.tbl | 410 ++++++++++++++++++++++++++
arch/microblaze/kernel/syscalls/syscallhdr.sh | 36 +++
arch/microblaze/kernel/syscalls/syscalltbl.sh | 32 ++
10 files changed, 526 insertions(+), 810 deletions(-)
create mode 100644 arch/microblaze/kernel/syscalls/Makefile
create mode 100644 arch/microblaze/kernel/syscalls/syscall.tbl
create mode 100644 arch/microblaze/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/microblaze/kernel/syscalls/syscalltbl.sh
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture. It
will be difficult to manually add, modify or delete the system calls
in the respective files manually. To make it easy by keeping a script
and which'll generate uapi header file and syscall table file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
- Compat entry name, if required.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, microblaze, sparc,
m68k, mips, 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 add two dozen of system calls to solve Y2038 issue. So this
patch series will help to add new system calls easily by adding new
entry in the syscall.tbl.
Firoz Khan (5):
parisc: move __IGNORE* entries to non uapi header
parisc: add __NR_syscalls along with __NR_Linux_syscalls
parisc: add system call table generation support
parisc: uapi header and system call table file generation
parisc: syscalls: ignore nfsservctl for other architectures
arch/parisc/Makefile | 4 +
arch/parisc/include/asm/Kbuild | 3 +
arch/parisc/include/asm/unistd.h | 8 +
arch/parisc/include/uapi/asm/Kbuild | 2 +
arch/parisc/include/uapi/asm/unistd.h | 382 +------------------------
arch/parisc/kernel/syscall.S | 10 +-
arch/parisc/kernel/syscall_table.S | 459 ------------------------------
arch/parisc/kernel/syscalls/Makefile | 57 ++++
arch/parisc/kernel/syscalls/syscall.tbl | 369 ++++++++++++++++++++++++
arch/parisc/kernel/syscalls/syscallhdr.sh | 34 +++
arch/parisc/kernel/syscalls/syscalltbl.sh | 36 +++
scripts/checksyscalls.sh | 1 +
12 files changed, 529 insertions(+), 836 deletions(-)
delete mode 100644 arch/parisc/kernel/syscall_table.S
create mode 100644 arch/parisc/kernel/syscalls/Makefile
create mode 100644 arch/parisc/kernel/syscalls/syscall.tbl
create mode 100644 arch/parisc/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/parisc/kernel/syscalls/syscalltbl.sh
--
1.9.1
The purpose of this patch series is, we can easily add/modify/delete
system call table support by changing entry in syscall.tbl file
instead of manually changing many files. The other goal is to unify
the system call table generation support implementation across all
the architectures.
The system call tables are in different format in all architecture. It
will be difficult to manually add, modify or delete the system calls
in the respective files manually. To make it easy by keeping a script
and which'll generate uapi header file and syscall table file.
syscall.tbl contains the list of available system calls along with
system call number and corresponding entry point. Add a new system
call in this architecture will be possible by adding new entry in
the syscall.tbl file.
Adding a new table entry consisting of:
- System call number.
- ABI.
- System call name.
- Entry point name.
- Compat entry name, if required.
ARM, s390 and x86 architecuture does exist the similar support. I
leverage their implementation to come up with a generic solution.
I have done the same support for work for alpha, microblaze, sparc,
m68k, mips, 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 add two dozen of system calls to solve Y2038 issue. So this
patch series will help to add new system calls easily by adding new
entry in the syscall.tbl.
Firoz Khan (6):
parisc: move __IGNORE* entries to non uapi header
parisc: add __NR_Linux_syscalls along with __NR_syscalls
parisc: add system call table generation support
parisc: uapi header and system call table file generation
parisc: wire up rseq system call
parisc: syscalls: Ignore nfsservctl for other architectures
arch/parisc/Makefile | 4 +
arch/parisc/include/asm/Kbuild | 3 +
arch/parisc/include/asm/unistd.h | 8 +
arch/parisc/include/uapi/asm/Kbuild | 2 +
arch/parisc/include/uapi/asm/unistd.h | 382 +------------------------
arch/parisc/kernel/syscall.S | 10 +-
arch/parisc/kernel/syscall_table.S | 459 ------------------------------
arch/parisc/kernel/syscalls/Makefile | 55 ++++
arch/parisc/kernel/syscalls/syscall.tbl | 371 ++++++++++++++++++++++++
arch/parisc/kernel/syscalls/syscallhdr.sh | 35 +++
arch/parisc/kernel/syscalls/syscalltbl.sh | 46 +++
scripts/checksyscalls.sh | 1 +
12 files changed, 540 insertions(+), 836 deletions(-)
delete mode 100644 arch/parisc/kernel/syscall_table.S
create mode 100644 arch/parisc/kernel/syscalls/Makefile
create mode 100644 arch/parisc/kernel/syscalls/syscall.tbl
create mode 100644 arch/parisc/kernel/syscalls/syscallhdr.sh
create mode 100644 arch/parisc/kernel/syscalls/syscalltbl.sh
--
1.9.1