diff options
author | Paul Moore <paul@paul-moore.com> | 2022-04-28 15:29:07 -0400 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2022-05-09 19:18:01 -0400 |
commit | 72198d99dd6fda40c1e6d0524caa61d82eddcf45 (patch) | |
tree | 671ce368521e7907a753732645c78523a355fc19 /src/syscalls.h | |
parent | 832b65b0fe408f538cf84b361eb7261eb7243b00 (diff) | |
download | libseccomp-72198d99dd6fda40c1e6d0524caa61d82eddcf45.tar.gz |
arch: basic infrastructure for tracking per-syscall/ABI kernel versions
This commit adds basic support for tracking what kernel introduced a
syscall for a given arch/ABI. It does not provide any of that kernel
version information, leaving only a SCMP_KV_UNDEF placeholder, nor
does it attempt to do anything meaningful with this new source of
information; this patch simply establishes a new syscalls.csv format
so that we can start properly recording the kernel versions.
Acked-by: Tom Hromatka <tom.hromatka@oracle.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'src/syscalls.h')
-rw-r--r-- | src/syscalls.h | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/src/syscalls.h b/src/syscalls.h index 58a788c..3a9e0cb 100644 --- a/src/syscalls.h +++ b/src/syscalls.h @@ -10,6 +10,7 @@ #define _SYSCALLS_H #include <stddef.h> +#include <seccomp.h> #include "arch-aarch64.h" #include "arch-arm.h" @@ -37,28 +38,55 @@ struct arch_syscall_table { /* each arch listed here must be defined in syscalls.c */ /* NOTE: see the warning above - BEWARE! */ + int x86; + enum scmp_kver x86_kver; int x86_64; + enum scmp_kver x86_64_kver; int x32; + enum scmp_kver x32_kver; + int arm; + enum scmp_kver arm_kver; int aarch64; + enum scmp_kver aarch64_kver; + int mips; + enum scmp_kver mips_kver; int mips64; + enum scmp_kver mips64_kver; int mips64n32; + enum scmp_kver mips64n32_kver; + int parisc; + enum scmp_kver parisc_kver; int parisc64; + enum scmp_kver parisc64_kver; + int ppc; + enum scmp_kver ppc_kver; int ppc64; + enum scmp_kver ppc64_kver; + int riscv64; + enum scmp_kver riscv64_kver; + int s390; + enum scmp_kver s390_kver; int s390x; + enum scmp_kver s390x_kver; + int sh; + enum scmp_kver sh_kver; }; -#define OFFSET_ARCH(NAME) offsetof(struct arch_syscall_table, NAME) +#define SYSTBL_OFFSET(NAME) offsetof(struct arch_syscall_table, NAME) /* defined in syscalls.perf.template */ int syscall_resolve_name(const char *name, int offset); const char *syscall_resolve_num(int num, int offset); +enum scmp_kver syscall_resolve_name_kver(const char *name, int offset_kver); +enum scmp_kver syscall_resolve_num_kver(int num, + int offset_arch, int offset_kver); const struct arch_syscall_def *syscall_iterate(unsigned int spot, int offset); /* helper functions for multiplexed syscalls, e.g. socketcall(2) and ipc(2) */ |