mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 21:44:06 +08:00
6ff645dd68
The system call tables are in different format in all architecture and it will be difficult to manually add, modify or delete the syscall table entries in the res- pective files. To make it easy by keeping a script and which will generate the uapi header and syscall table file. This change will also help to unify the implemen- tation across all architectures. The system call table generation script is added in kernel/syscalls directory which contain the scripts to generate both uapi header file and system call table files. The syscall.tbl will be input for the scripts. 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. syscallhdr.sh and syscalltbl.sh will generate uapi header unistd_32/64.h and syscall_table_32/64/c32.h files respect- ively. Both .sh files will parse the content syscall.tbl to generate the header and table files. unistd_32/64.h will be included by uapi/asm/unistd.h and syscall_table_32/64/- c32.h is included by kernel/syscall.S - the real system call table. ARM, s390 and x86 architecuture does have similar support. I leverage their implementation to come up with a generic solution. Signed-off-by: Firoz Khan <firoz.khan@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
56 lines
1.6 KiB
Makefile
56 lines
1.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
kapi := arch/$(SRCARCH)/include/generated/asm
|
|
uapi := arch/$(SRCARCH)/include/generated/uapi/asm
|
|
|
|
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
|
|
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
|
|
|
|
syscall := $(srctree)/$(src)/syscall.tbl
|
|
syshdr := $(srctree)/$(src)/syscallhdr.sh
|
|
systbl := $(srctree)/$(src)/syscalltbl.sh
|
|
|
|
quiet_cmd_syshdr = SYSHDR $@
|
|
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
|
|
'$(syshdr_abis_$(basetarget))' \
|
|
'$(syshdr_pfx_$(basetarget))' \
|
|
'$(syshdr_offset_$(basetarget))'
|
|
|
|
quiet_cmd_systbl = SYSTBL $@
|
|
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
|
|
'$(systbl_abis_$(basetarget))' \
|
|
'$(systbl_abi_$(basetarget))' \
|
|
'$(systbl_offset_$(basetarget))'
|
|
|
|
syshdr_abis_unistd_32 := common,32
|
|
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
|
|
$(call if_changed,syshdr)
|
|
|
|
syshdr_abis_unistd_64 := common,64
|
|
$(uapi)/unistd_64.h: $(syscall) $(syshdr)
|
|
$(call if_changed,syshdr)
|
|
|
|
systbl_abis_syscall_table_32 := common,32
|
|
$(kapi)/syscall_table_32.h: $(syscall) $(systbl)
|
|
$(call if_changed,systbl)
|
|
|
|
systbl_abis_syscall_table_64 := common,64
|
|
$(kapi)/syscall_table_64.h: $(syscall) $(systbl)
|
|
$(call if_changed,systbl)
|
|
|
|
systbl_abis_syscall_table_c32 := common,32
|
|
systbl_abi_syscall_table_c32 := c32
|
|
$(kapi)/syscall_table_c32.h: $(syscall) $(systbl)
|
|
$(call if_changed,systbl)
|
|
|
|
uapisyshdr-y += unistd_32.h unistd_64.h
|
|
kapisyshdr-y += syscall_table_32.h \
|
|
syscall_table_64.h \
|
|
syscall_table_c32.h
|
|
|
|
targets += $(uapisyshdr-y) $(kapisyshdr-y)
|
|
|
|
PHONY += all
|
|
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
|
|
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
|
|
@:
|