unwind: introduce markers specifying the needs of special care in unwinding
Some system calls require capturing the stack trace before they are processed in kernel. Typical one is execve. Some system calls require invalidating mmap cache after they are processed in kernel. In current implementation these requirements are handled directly by appropriate syscall handlers. However, it is difficult to keep the source code maintainable using this approach to cover all system calls which have such requirements. A more generic way to implement this is to flag all syscalls that require special processing, and handle these flags right in trace_syscall_entering instead of changing syscall handlers. This patch just defines new flags: STACKTRACE_INVALIDATE_CACHE and STACKTRACE_CAPTURE_ON_ENTER. The names of macros are suggested by Dmitry Levin. Signed-off-by: Masatake YAMATO <yamato@redhat.com>
This commit is contained in:
parent
a0b4ee7b38
commit
1d78d22058
2
defs.h
2
defs.h
@ -546,6 +546,8 @@ extern const struct xlat whence_codes[];
|
||||
#define TRACE_DESC 040 /* Trace file descriptor-related syscalls. */
|
||||
#define TRACE_MEMORY 0100 /* Trace memory mapping-related syscalls. */
|
||||
#define SYSCALL_NEVER_FAILS 0200 /* Syscall is always successful. */
|
||||
#define STACKTRACE_INVALIDATE_CACHE 0400 /* Trigger proc/maps cache updating */
|
||||
#define STACKTRACE_CAPTURE_ON_ENTER 01000 /* Capture stacktrace on "entering" stage */
|
||||
|
||||
typedef enum {
|
||||
CFLAG_NONE = 0,
|
||||
|
@ -98,6 +98,8 @@
|
||||
#define TM TRACE_MEMORY
|
||||
#define NF SYSCALL_NEVER_FAILS
|
||||
#define MA MAX_ARGS
|
||||
#define SI STACKTRACE_INVALIDATE_CACHE
|
||||
#define SE STACKTRACE_CAPTURE_ON_ENTER
|
||||
|
||||
const struct_sysent sysent0[] = {
|
||||
#include "syscallent.h"
|
||||
@ -125,6 +127,8 @@ static const struct_sysent sysent2[] = {
|
||||
#undef TM
|
||||
#undef NF
|
||||
#undef MA
|
||||
#undef SI
|
||||
#undef SE
|
||||
|
||||
/*
|
||||
* `ioctlent.h' may be generated from `ioctlent.raw' by the auxiliary
|
||||
|
Loading…
x
Reference in New Issue
Block a user