X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt-events.h;h=6711341c86f60ac7d13eb952d706a0174b9a062e;hb=11b5a3c23711e1119185011f791f599713914d67;hp=b8485c35accbb62eecffae6da191bcf87905d888;hpb=3b923e5b756af2f3cc9082143735704e79e5f3ba;p=lttng-modules.git diff --git a/ltt-events.h b/ltt-events.h index b8485c35..6711341c 100644 --- a/ltt-events.h +++ b/ltt-events.h @@ -1,3 +1,6 @@ +#ifndef _LTT_EVENTS_H +#define _LTT_EVENTS_H + /* * ltt-events.h * @@ -7,14 +10,11 @@ */ #include +#include "ltt-debugfs-abi.h" struct ltt_channel; struct ltt_session; -enum instrum_type itype { - INSTRUM_TRACEPOINTS, -}; - /* * ltt_event structure is referred to by the tracing fast path. It must be * kept small. @@ -29,6 +29,18 @@ struct ltt_event { struct list_head list; /* Event list */ }; +struct ltt_channel_ops { + struct channel *(*channel_create)(const char *name, + struct ltt_session *session, + void *buf_addr, + size_t subbuf_size, size_t num_subbuf, + unsigned int switch_timer_interval, + unsigned int read_timer_interval); + void (*channel_destroy)(struct channel *chan); + struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan); + struct lib_ring_buffer *(*buffer_read_close)(struct lib_ring_buffer *buf); +}; + struct ltt_channel { struct channel *chan; /* Channel buffers */ /* Event ID management */ @@ -37,6 +49,7 @@ struct ltt_channel { unsigned int free_event_id; /* Next event ID to allocate */ struct list_head list; /* Channel list */ wait_queue_head_t notify_wait; /* Channel addition notif. waitqueue */ + struct ltt_channel_ops *ops; }; struct ltt_session { @@ -47,42 +60,32 @@ struct ltt_session { struct list_head list; /* Session list */ }; -struct ltt_trace_ops { - struct channel *(*channel_create)(const char *name, - struct ltt_trace *trace, - void *buf_addr, - size_t subbuf_size, size_t num_subbuf, - unsigned int switch_timer_interval, - unsigned int read_timer_interval); - void (*channel_destroy)(struct channel *chan); - struct lib_ring_buffer *(*buffer_read_open)(struct channel *chan); - struct lib_ring_buffer *(*buffer_read_close)(struct lib_ring_buffer *buf); -}; - struct ltt_transport { char *name; struct module *owner; struct list_head node; - struct ltt_trace_ops ops; + struct ltt_channel_ops ops; }; struct ltt_session *ltt_session_create(void); int ltt_session_start(struct ltt_session *session); int ltt_session_stop(struct ltt_session *session); -int ltt_session_destroy(struct ltt_session *session); +void ltt_session_destroy(struct ltt_session *session); struct ltt_channel *ltt_channel_create(struct ltt_session *session, int overwrite, void *buf_addr, size_t subbuf_size, size_t num_subbuf, unsigned int switch_timer_interval, unsigned int read_timer_interval); -int _ltt_channel_destroy(struct ltt_channel *chan); +void _ltt_channel_destroy(struct ltt_channel *chan); struct ltt_event *ltt_event_create(struct ltt_channel *chan, - enum instrum_type itype, char *name, - void *filter); + enum instrum_type itype, + void *probe, void *filter); int _ltt_event_destroy(struct ltt_event *event); void ltt_transport_register(struct ltt_transport *transport); void ltt_transport_unregister(struct ltt_transport *transport); + +#endif /* _LTT_EVENTS_H */