summaryrefslogtreecommitdiff
path: root/src/syscalls.h
diff options
context:
space:
mode:
authorPaul Moore <paul@paul-moore.com>2022-04-28 15:29:07 -0400
committerPaul Moore <paul@paul-moore.com>2022-05-09 19:18:01 -0400
commit72198d99dd6fda40c1e6d0524caa61d82eddcf45 (patch)
tree671ce368521e7907a753732645c78523a355fc19 /src/syscalls.h
parent832b65b0fe408f538cf84b361eb7261eb7243b00 (diff)
downloadlibseccomp-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.h30
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) */