]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blame - include/trace/syscall.h
tracing: Add individual syscalls tracepoint id support
[mirror_ubuntu-zesty-kernel.git] / include / trace / syscall.h
CommitLineData
47788c58
FW
1#ifndef _TRACE_SYSCALL_H
2#define _TRACE_SYSCALL_H
3
a871bd33 4#include <linux/tracepoint.h>
fb34a08c
JB
5#include <linux/unistd.h>
6#include <linux/ftrace_event.h>
a871bd33 7
47788c58
FW
8#include <asm/ptrace.h>
9
a871bd33
JB
10
11extern void syscall_regfunc(void);
12extern void syscall_unregfunc(void);
13
14DECLARE_TRACE_WITH_CALLBACK(syscall_enter,
15 TP_PROTO(struct pt_regs *regs, long id),
16 TP_ARGS(regs, id),
17 syscall_regfunc,
18 syscall_unregfunc
19);
20
21DECLARE_TRACE_WITH_CALLBACK(syscall_exit,
22 TP_PROTO(struct pt_regs *regs, long ret),
23 TP_ARGS(regs, ret),
24 syscall_regfunc,
25 syscall_unregfunc
26);
27
47788c58
FW
28/*
29 * A syscall entry in the ftrace syscalls array.
30 *
31 * @name: name of the syscall
32 * @nb_args: number of parameters it takes
33 * @types: list of types as strings
34 * @args: list of args as strings (args[i] matches types[i])
64c12e04
JB
35 * @enter_id: associated ftrace enter event id
36 * @exit_id: associated ftrace exit event id
47788c58
FW
37 */
38struct syscall_metadata {
39 const char *name;
40 int nb_args;
41 const char **types;
42 const char **args;
64c12e04
JB
43 int enter_id;
44 int exit_id;
47788c58
FW
45};
46
47#ifdef CONFIG_FTRACE_SYSCALLS
47788c58 48extern struct syscall_metadata *syscall_nr_to_meta(int nr);
fb34a08c 49extern int syscall_name_to_nr(char *name);
64c12e04
JB
50void set_syscall_enter_id(int num, int id);
51void set_syscall_exit_id(int num, int id);
fb34a08c
JB
52extern struct trace_event event_syscall_enter;
53extern struct trace_event event_syscall_exit;
54extern int reg_event_syscall_enter(void *ptr);
55extern void unreg_event_syscall_enter(void *ptr);
56extern int reg_event_syscall_exit(void *ptr);
57extern void unreg_event_syscall_exit(void *ptr);
64c12e04
JB
58enum print_line_t print_syscall_enter(struct trace_iterator *iter, int flags);
59enum print_line_t print_syscall_exit(struct trace_iterator *iter, int flags);
47788c58
FW
60#endif
61
62#endif /* _TRACE_SYSCALL_H */