7 * Copyright 2010 (c) - Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
9 * Holds LTTng per-session event registry.
12 #include <linux/list.h>
13 #include "ltt-debugfs-abi.h"
17 struct lib_ring_buffer_ctx
;
20 * ltt_event structure is referred to by the tracing fast path. It must be
25 struct ltt_channel
*chan
;
29 enum instrum_type itype
;
30 struct list_head list
; /* Event list */
33 struct ltt_channel_ops
{
34 struct channel
*(*channel_create
)(const char *name
,
35 struct ltt_session
*session
,
37 size_t subbuf_size
, size_t num_subbuf
,
38 unsigned int switch_timer_interval
,
39 unsigned int read_timer_interval
);
40 void (*channel_destroy
)(struct channel
*chan
);
41 struct lib_ring_buffer
*(*buffer_read_open
)(struct channel
*chan
);
42 void (*buffer_read_close
)(struct lib_ring_buffer
*buf
);
43 int (*event_reserve
)(struct lib_ring_buffer_ctx
*ctx
);
44 void (*event_commit
)(struct lib_ring_buffer_ctx
*ctx
);
48 struct channel
*chan
; /* Channel buffers */
49 /* Event ID management */
50 struct ltt_session
*session
;
51 struct file
*file
; /* File associated to channel */
52 unsigned int free_event_id
; /* Next event ID to allocate */
53 struct list_head list
; /* Channel list */
54 wait_queue_head_t notify_wait
; /* Channel addition notif. waitqueue */
55 struct ltt_channel_ops
*ops
;
59 int active
; /* Is trace session active ? */
60 struct file
*file
; /* File associated to session */
61 struct list_head chan
; /* Channel list head */
62 struct list_head events
; /* Event list head */
63 struct list_head list
; /* Session list */
66 struct ltt_transport
{
69 struct list_head node
;
70 struct ltt_channel_ops ops
;
73 struct ltt_session
*ltt_session_create(void);
74 int ltt_session_start(struct ltt_session
*session
);
75 int ltt_session_stop(struct ltt_session
*session
);
76 void ltt_session_destroy(struct ltt_session
*session
);
78 struct ltt_channel
*ltt_channel_create(struct ltt_session
*session
,
79 int overwrite
, void *buf_addr
,
80 size_t subbuf_size
, size_t num_subbuf
,
81 unsigned int switch_timer_interval
,
82 unsigned int read_timer_interval
);
83 void _ltt_channel_destroy(struct ltt_channel
*chan
);
85 struct ltt_event
*ltt_event_create(struct ltt_channel
*chan
,
87 enum instrum_type itype
,
88 void *probe
, void *filter
);
89 int _ltt_event_destroy(struct ltt_event
*event
);
91 void ltt_transport_register(struct ltt_transport
*transport
);
92 void ltt_transport_unregister(struct ltt_transport
*transport
);
94 int ltt_debugfs_abi_init(void);
95 void ltt_debugfs_abi_exit(void);
97 #endif /* _LTT_EVENTS_H */