6ab0c7b62a5a0a5bd4ad867b91ce0996f42ef27b
[lttng-tools.git] / include / lttng / channel.h
1 /*
2 * Copyright (C) 2014 - David Goulet <dgoulet@efficios.com>
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License, version 2.1 only,
6 * as published by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this library; if not, write to the Free Software Foundation,
15 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17
18 #ifndef LTTNG_CHANNEL_H
19 #define LTTNG_CHANNEL_H
20
21 #include <lttng/domain.h>
22 #include <lttng/event.h>
23
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27
28 /*
29 * Tracer channel attributes. For both kernel and user-space.
30 *
31 * The structures should be initialized to zero before use.
32 */
33 #define LTTNG_CHANNEL_ATTR_PADDING1 LTTNG_SYMBOL_NAME_LEN + 12
34 struct lttng_channel_attr {
35 int overwrite; /* 1: overwrite, 0: discard */
36 uint64_t subbuf_size; /* bytes */
37 uint64_t num_subbuf; /* power of 2 */
38 unsigned int switch_timer_interval; /* usec */
39 unsigned int read_timer_interval; /* usec */
40 enum lttng_event_output output; /* splice, mmap */
41 /* LTTng 2.1 padding limit */
42 uint64_t tracefile_size; /* bytes */
43 uint64_t tracefile_count; /* number of tracefiles */
44 /* LTTng 2.3 padding limit */
45 unsigned int live_timer_interval; /* usec */
46
47 char padding[LTTNG_CHANNEL_ATTR_PADDING1];
48 };
49
50 /*
51 * Channel information structure. For both kernel and user-space.
52 *
53 * The structures should be initialized to zero before use.
54 */
55 #define LTTNG_CHANNEL_PADDING1 16
56 struct lttng_channel {
57 char name[LTTNG_SYMBOL_NAME_LEN];
58 uint32_t enabled;
59 struct lttng_channel_attr attr;
60
61 char padding[LTTNG_CHANNEL_PADDING1];
62 };
63
64 /*
65 * List the channel(s) of a session.
66 *
67 * The handle CAN NOT be NULL.
68 *
69 * Return the size (number of entries) of the "lttng_channel" array. Caller
70 * must free channels. On error, a negative LTTng error code is returned.
71 */
72 extern int lttng_list_channels(struct lttng_handle *handle,
73 struct lttng_channel **channels);
74
75 /*
76 * Create or enable a channel.
77 *
78 * The chan and handle params can not be NULL.
79 *
80 * Return 0 on success else a negative LTTng error code.
81 */
82 extern int lttng_enable_channel(struct lttng_handle *handle,
83 struct lttng_channel *chan);
84
85 /*
86 * Disable channel.
87 *
88 * Name and handle CAN NOT be NULL.
89 *
90 * Return 0 on success else a negative LTTng error code.
91 */
92 extern int lttng_disable_channel(struct lttng_handle *handle,
93 const char *name);
94
95 /*
96 * Set the default channel attributes for a specific domain and an allocated
97 * lttng_channel_attr pointer.
98 *
99 * If one or both arguments are NULL, nothing happens.
100 */
101 extern void lttng_channel_set_default_attr(struct lttng_domain *domain,
102 struct lttng_channel_attr *attr);
103
104 #ifdef __cplusplus
105 }
106 #endif
107
108 #endif /* LTTNG_CHANNEL_H */
This page took 0.034503 seconds and 4 git commands to generate.