summaryrefslogtreecommitdiff
path: root/src/defs.h
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2022-01-17 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2022-01-17 08:00:00 +0000
commit4cd3b254ebb73b0a660db56e7badfdfc40669380 (patch)
tree36072814176df1d5e6bc0d97a7cc19fc69aee453 /src/defs.h
parente71f3095a92fcce771c02296b8f87ed40e0ef39b (diff)
downloadstrace-4cd3b254ebb73b0a660db56e7badfdfc40669380.tar.gz
Introduce scno_pers_in_range and scno_pers_is_valid
* src/defs.h (scno_pers_in_range, scno_pers_is_valid): New functions. * src/syscall_name.c (syscall_name_arch): Use scno_pers_is_valid.
Diffstat (limited to 'src/defs.h')
-rw-r--r--src/defs.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/defs.h b/src/defs.h
index 99a1cd263..66e2c385d 100644
--- a/src/defs.h
+++ b/src/defs.h
@@ -1891,6 +1891,13 @@ scno_in_range(kernel_ulong_t scno)
return scno < nsyscalls;
}
+/* Like scno_in_range but for the specified personality. */
+static inline bool
+scno_pers_in_range(kernel_ulong_t scno, unsigned int pers)
+{
+ return scno < nsyscall_vec[pers];
+}
+
/*
* Checks whether scno is not out of range,
* its corresponding sysent[scno].sys_func is non-NULL,
@@ -1904,6 +1911,15 @@ scno_is_valid(kernel_ulong_t scno)
&& !(sysent[scno].sys_flags & TRACE_INDIRECT_SUBCALL);
}
+/* Like scno_is_valid but for the specified personality. */
+static inline bool
+scno_pers_is_valid(kernel_ulong_t scno, unsigned int pers)
+{
+ return scno_pers_in_range(scno, pers)
+ && sysent_vec[pers][scno].sys_func
+ && !(sysent_vec[pers][scno].sys_flags & TRACE_INDIRECT_SUBCALL);
+}
+
# define MPERS_FUNC_NAME__(prefix, name) prefix ## name
# define MPERS_FUNC_NAME_(prefix, name) MPERS_FUNC_NAME__(prefix, name)
# define MPERS_FUNC_NAME(name) MPERS_FUNC_NAME_(MPERS_PREFIX, name)