Add ltt-debugfs-abi.h
[lttng-modules.git] / ltt-events.h
CommitLineData
11b5a3c2
MD
1#ifndef _LTT_EVENTS_H
2#define _LTT_EVENTS_H
3
4e3c1b9b
MD
4/*
5 * ltt-events.h
6 *
7 * Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
8 *
9 * Holds LTTng per-session event registry.
10 */
11
12#include <linux/list.h>
11b5a3c2 13#include "ltt-debugfs-abi.h"
4e3c1b9b
MD
14
15struct ltt_channel;
16struct ltt_session;
17
18/*
19 * ltt_event structure is referred to by the tracing fast path. It must be
20 * kept small.
21 */
22struct ltt_event {
23 unsigned int id;
24 struct ltt_channel *chan;
baf20995 25 void *probe;
4e3c1b9b
MD
26 void *filter;
27 char *name;
baf20995 28 enum instrum_type itype;
4e3c1b9b
MD
29 struct list_head list; /* Event list */
30};
31
11b5a3c2
MD
32struct ltt_channel_ops {
33 struct channel *(*channel_create)(const char *name,
34 struct ltt_session *session,
35 void *buf_addr,
36 size_t subbuf_size, size_t num_subbuf,
37 unsigned int switch_timer_interval,
38 unsigned int read_timer_interval);
39 void (*channel_destroy)(struct channel *chan);
40 struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan);
41 struct lib_ring_buffer *(*buffer_read_close)(struct lib_ring_buffer *buf);
42};
43
4e3c1b9b
MD
44struct ltt_channel {
45 struct channel *chan; /* Channel buffers */
46 /* Event ID management */
47 struct ltt_session *session;
d4e1a740 48 struct file *file; /* File associated to channel */
e5382b6d 49 unsigned int free_event_id; /* Next event ID to allocate */
4e3c1b9b 50 struct list_head list; /* Channel list */
653fe716 51 wait_queue_head_t notify_wait; /* Channel addition notif. waitqueue */
11b5a3c2 52 struct ltt_channel_ops *ops;
4e3c1b9b
MD
53};
54
55struct ltt_session {
e5382b6d 56 int active; /* Is trace session active ? */
d4e1a740 57 struct file *file; /* File associated to session */
4e3c1b9b
MD
58 struct list_head chan; /* Channel list head */
59 struct list_head events; /* Event list head */
60 struct list_head list; /* Session list */
4e3c1b9b
MD
61};
62
c0e31d2e
MD
63struct ltt_transport {
64 char *name;
65 struct module *owner;
66 struct list_head node;
11b5a3c2 67 struct ltt_channel_ops ops;
c0e31d2e
MD
68};
69
baf20995 70struct ltt_session *ltt_session_create(void);
c0e31d2e
MD
71int ltt_session_start(struct ltt_session *session);
72int ltt_session_stop(struct ltt_session *session);
11b5a3c2 73void ltt_session_destroy(struct ltt_session *session);
4e3c1b9b 74
baf20995 75struct ltt_channel *ltt_channel_create(struct ltt_session *session,
4e3c1b9b
MD
76 int overwrite, void *buf_addr,
77 size_t subbuf_size, size_t num_subbuf,
78 unsigned int switch_timer_interval,
79 unsigned int read_timer_interval);
11b5a3c2 80void _ltt_channel_destroy(struct ltt_channel *chan);
4e3c1b9b 81
653fe716 82struct ltt_event *ltt_event_create(struct ltt_channel *chan,
653fe716 83 char *name,
11b5a3c2
MD
84 enum instrum_type itype,
85 void *probe, void *filter);
4e3c1b9b 86int _ltt_event_destroy(struct ltt_event *event);
c0e31d2e
MD
87
88void ltt_transport_register(struct ltt_transport *transport);
89void ltt_transport_unregister(struct ltt_transport *transport);
11b5a3c2
MD
90
91#endif /* _LTT_EVENTS_H */
This page took 0.028723 seconds and 4 git commands to generate.