linux/include/trace/syscall.h
<<
>>
Prefs
   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 */
  25struct 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)
  38static inline void syscall_tracepoint_update(struct task_struct *p)
  39{
  40        if (test_thread_flag(TIF_SYSCALL_TRACEPOINT))
  41                set_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
  42        else
  43                clear_tsk_thread_flag(p, TIF_SYSCALL_TRACEPOINT);
  44}
  45#else
  46static inline void syscall_tracepoint_update(struct task_struct *p)
  47{
  48}
  49#endif
  50
  51#endif /* _TRACE_SYSCALL_H */
  52