Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/include/trace/syscall.h
26278 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef _TRACE_SYSCALL_H
3
#define _TRACE_SYSCALL_H
4
5
#include <linux/tracepoint.h>
6
#include <linux/unistd.h>
7
#include <linux/trace_events.h>
8
#include <linux/thread_info.h>
9
10
#include <asm/ptrace.h>
11
12
13
/*
14
* A syscall entry in the ftrace syscalls array.
15
*
16
* @name: name of the syscall
17
* @syscall_nr: number of the syscall
18
* @nb_args: number of parameters it takes
19
* @types: list of types as strings
20
* @args: list of args as strings (args[i] matches types[i])
21
* @enter_fields: list of fields for syscall_enter trace event
22
* @enter_event: associated syscall_enter trace event
23
* @exit_event: associated syscall_exit trace event
24
*/
25
struct syscall_metadata {
26
const char *name;
27
int syscall_nr;
28
int nb_args;
29
const char **types;
30
const char **args;
31
struct list_head enter_fields;
32
33
struct trace_event_call *enter_event;
34
struct trace_event_call *exit_event;
35
};
36
37
#if defined(CONFIG_TRACEPOINTS) && defined(CONFIG_HAVE_SYSCALL_TRACEPOINTS)
38
static inline void syscall_tracepoint_update(struct task_struct *p)
39
{
40
if (test_syscall_work(SYSCALL_TRACEPOINT))
41
set_task_syscall_work(p, SYSCALL_TRACEPOINT);
42
else
43
clear_task_syscall_work(p, SYSCALL_TRACEPOINT);
44
}
45
#else
46
static inline void syscall_tracepoint_update(struct task_struct *p)
47
{
48
}
49
#endif
50
51
#endif /* _TRACE_SYSCALL_H */
52
53