forked from lttng/lttng-modules
-
Notifications
You must be signed in to change notification settings - Fork 1
/
lttng-abi-old.h
141 lines (120 loc) · 4.18 KB
/
lttng-abi-old.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#ifndef _LTTNG_ABI_OLD_H
#define _LTTNG_ABI_OLD_H
/*
* lttng-abi-old.h
*
* LTTng old ABI header (without support for compat 32/64 bits)
*
* Copyright (C) 2010-2012 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; only
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <linux/fs.h>
#include "lttng-abi.h"
/*
* LTTng DebugFS ABI structures.
*/
#define LTTNG_KERNEL_OLD_CHANNEL_PADDING LTTNG_KERNEL_SYM_NAME_LEN + 32
struct lttng_kernel_old_channel {
int overwrite; /* 1: overwrite, 0: discard */
uint64_t subbuf_size; /* in bytes */
uint64_t num_subbuf;
unsigned int switch_timer_interval; /* usecs */
unsigned int read_timer_interval; /* usecs */
enum lttng_kernel_output output; /* splice, mmap */
char padding[LTTNG_KERNEL_OLD_CHANNEL_PADDING];
};
struct lttng_kernel_old_kretprobe {
uint64_t addr;
uint64_t offset;
char symbol_name[LTTNG_KERNEL_SYM_NAME_LEN];
};
/*
* Either addr is used, or symbol_name and offset.
*/
struct lttng_kernel_old_kprobe {
uint64_t addr;
uint64_t offset;
char symbol_name[LTTNG_KERNEL_SYM_NAME_LEN];
};
struct lttng_kernel_old_function_tracer {
char symbol_name[LTTNG_KERNEL_SYM_NAME_LEN];
};
/*
* For syscall tracing, name = '\0' means "enable all".
*/
#define LTTNG_KERNEL_OLD_EVENT_PADDING1 16
#define LTTNG_KERNEL_OLD_EVENT_PADDING2 LTTNG_KERNEL_SYM_NAME_LEN + 32
struct lttng_kernel_old_event {
char name[LTTNG_KERNEL_SYM_NAME_LEN]; /* event name */
enum lttng_kernel_instrumentation instrumentation;
char padding[LTTNG_KERNEL_OLD_EVENT_PADDING1];
/* Per instrumentation type configuration */
union {
struct lttng_kernel_old_kretprobe kretprobe;
struct lttng_kernel_old_kprobe kprobe;
struct lttng_kernel_old_function_tracer ftrace;
char padding[LTTNG_KERNEL_OLD_EVENT_PADDING2];
} u;
};
struct lttng_kernel_old_tracer_version {
uint32_t major;
uint32_t minor;
uint32_t patchlevel;
};
struct lttng_kernel_old_calibrate {
enum lttng_kernel_calibrate_type type; /* type (input) */
};
struct lttng_kernel_old_perf_counter_ctx {
uint32_t type;
uint64_t config;
char name[LTTNG_KERNEL_SYM_NAME_LEN];
};
#define LTTNG_KERNEL_OLD_CONTEXT_PADDING1 16
#define LTTNG_KERNEL_OLD_CONTEXT_PADDING2 LTTNG_KERNEL_SYM_NAME_LEN + 32
struct lttng_kernel_old_context {
enum lttng_kernel_context_type ctx;
char padding[LTTNG_KERNEL_OLD_CONTEXT_PADDING1];
union {
struct lttng_kernel_old_perf_counter_ctx perf_counter;
char padding[LTTNG_KERNEL_OLD_CONTEXT_PADDING2];
} u;
};
/* LTTng file descriptor ioctl */
#define LTTNG_KERNEL_OLD_SESSION _IO(0xF6, 0x40)
#define LTTNG_KERNEL_OLD_TRACER_VERSION \
_IOR(0xF6, 0x41, struct lttng_kernel_old_tracer_version)
#define LTTNG_KERNEL_OLD_TRACEPOINT_LIST _IO(0xF6, 0x42)
#define LTTNG_KERNEL_OLD_WAIT_QUIESCENT _IO(0xF6, 0x43)
#define LTTNG_KERNEL_OLD_CALIBRATE \
_IOWR(0xF6, 0x44, struct lttng_kernel_old_calibrate)
/* Session FD ioctl */
#define LTTNG_KERNEL_OLD_METADATA \
_IOW(0xF6, 0x50, struct lttng_kernel_old_channel)
#define LTTNG_KERNEL_OLD_CHANNEL \
_IOW(0xF6, 0x51, struct lttng_kernel_old_channel)
#define LTTNG_KERNEL_OLD_SESSION_START _IO(0xF6, 0x52)
#define LTTNG_KERNEL_OLD_SESSION_STOP _IO(0xF6, 0x53)
/* Channel FD ioctl */
#define LTTNG_KERNEL_OLD_STREAM _IO(0xF6, 0x60)
#define LTTNG_KERNEL_OLD_EVENT \
_IOW(0xF6, 0x61, struct lttng_kernel_old_event)
/* Event and Channel FD ioctl */
#define LTTNG_KERNEL_OLD_CONTEXT \
_IOW(0xF6, 0x70, struct lttng_kernel_old_context)
/* Event, Channel and Session ioctl */
#define LTTNG_KERNEL_OLD_ENABLE _IO(0xF6, 0x80)
#define LTTNG_KERNEL_OLD_DISABLE _IO(0xF6, 0x81)
#endif /* _LTTNG_ABI_OLD_H */