#include "trace.h"
/*
- * get_kernel_channel_by_name
- *
- * Find the channel name for the given kernel session.
+ * Find the channel name for the given kernel session.
*/
struct ltt_kernel_channel *get_kernel_channel_by_name(
char *name, struct ltt_kernel_session *session)
}
/*
- * get_kernel_event_by_name
- *
- * Find the event name for the given channel.
+ * Find the event name for the given channel.
*/
struct ltt_kernel_event *get_kernel_event_by_name(
char *name, struct ltt_kernel_channel *channel)
}
/*
- * trace_create_kernel_session
- *
- * Allocate and initialize a kernel session data structure.
+ * Allocate and initialize a kernel session data structure.
*
- * Return pointer to structure or NULL.
+ * Return pointer to structure or NULL.
*/
struct ltt_kernel_session *trace_create_kernel_session(void)
{
lks->channel_count = 0;
lks->stream_count_global = 0;
lks->metadata = NULL;
+ lks->consumer_fd = 0;
CDS_INIT_LIST_HEAD(&lks->channel_list.head);
return lks;
}
/*
- * trace_create_kernel_channel
+ * Allocate and initialize a kernel channel data structure.
*
- * Allocate and initialize a kernel channel data structure.
- *
- * Return pointer to structure or NULL.
+ * Return pointer to structure or NULL.
*/
struct ltt_kernel_channel *trace_create_kernel_channel(struct lttng_channel *chan, char *path)
{
lkc->fd = 0;
lkc->stream_count = 0;
+ lkc->event_count = 0;
lkc->enabled = 1;
lkc->ctx = NULL;
/* Init linked list */
}
/*
- * trace_create_kernel_event
- *
- * Allocate and initialize a kernel event. Set name and event type.
+ * Allocate and initialize a kernel event. Set name and event type.
*
- * Return pointer to structure or NULL.
+ * Return pointer to structure or NULL.
*/
struct ltt_kernel_event *trace_create_kernel_event(struct lttng_event *ev)
{
attr->u.kprobe.offset = ev->attr.probe.offset;
strncpy(attr->u.kprobe.symbol_name,
ev->attr.probe.symbol_name, LTTNG_SYM_NAME_LEN);
+ attr->u.kprobe.symbol_name[LTTNG_SYM_NAME_LEN - 1] = '\0';
break;
case LTTNG_EVENT_FUNCTION:
+ attr->instrumentation = LTTNG_KERNEL_KRETPROBE;
+ attr->u.kretprobe.addr = ev->attr.probe.addr;
+ attr->u.kretprobe.offset = ev->attr.probe.offset;
+ attr->u.kretprobe.offset = ev->attr.probe.offset;
+ strncpy(attr->u.kretprobe.symbol_name,
+ ev->attr.probe.symbol_name, LTTNG_SYM_NAME_LEN);
+ attr->u.kretprobe.symbol_name[LTTNG_SYM_NAME_LEN - 1] = '\0';
+ break;
+ case LTTNG_EVENT_FUNCTION_ENTRY:
attr->instrumentation = LTTNG_KERNEL_FUNCTION;
strncpy(attr->u.ftrace.symbol_name,
ev->attr.ftrace.symbol_name, LTTNG_SYM_NAME_LEN);
+ attr->u.ftrace.symbol_name[LTTNG_SYM_NAME_LEN - 1] = '\0';
break;
case LTTNG_EVENT_TRACEPOINT:
attr->instrumentation = LTTNG_KERNEL_TRACEPOINT;
/* Copy event name */
strncpy(attr->name, ev->name, LTTNG_SYM_NAME_LEN);
+ attr->name[LTTNG_SYM_NAME_LEN - 1] = '\0';
/* Setting up a kernel event */
lke->fd = 0;
}
/*
- * trace_create_kernel_metadata
- *
- * Allocate and initialize a kernel metadata.
+ * Allocate and initialize a kernel metadata.
*
- * Return pointer to structure or NULL.
+ * Return pointer to structure or NULL.
*/
struct ltt_kernel_metadata *trace_create_kernel_metadata(char *path)
{
/* Set default attributes */
chan->attr.overwrite = DEFAULT_CHANNEL_OVERWRITE;
- chan->attr.subbuf_size = DEFAULT_CHANNEL_SUBBUF_SIZE;
- chan->attr.num_subbuf = DEFAULT_CHANNEL_SUBBUF_NUM;
+ chan->attr.subbuf_size = DEFAULT_METADATA_SUBBUF_SIZE;
+ chan->attr.num_subbuf = DEFAULT_METADATA_SUBBUF_NUM;
chan->attr.switch_timer_interval = DEFAULT_CHANNEL_SWITCH_TIMER;
chan->attr.read_timer_interval = DEFAULT_CHANNEL_READ_TIMER;
chan->attr.output = DEFAULT_KERNEL_CHANNEL_OUTPUT;
}
/*
- * trace_create_kernel_stream
+ * Allocate and initialize a kernel stream. The stream is set to ACTIVE_FD by
+ * default.
*
- * Allocate and initialize a kernel stream. The stream is set to ACTIVE_FD by
- * default.
- *
- * Return pointer to structure or NULL.
+ * Return pointer to structure or NULL.
*/
struct ltt_kernel_stream *trace_create_kernel_stream(void)
{
return NULL;
}
+/*
+ * Cleanup kernel stream structure.
+ */
void trace_destroy_kernel_stream(struct ltt_kernel_stream *stream)
{
DBG("[trace] Closing stream fd %d", stream->fd);
free(stream);
}
+/*
+ * Cleanup kernel event structure.
+ */
void trace_destroy_kernel_event(struct ltt_kernel_event *event)
{
DBG("[trace] Closing event fd %d", event->fd);
free(event);
}
+/*
+ * Cleanup kernel channel structure.
+ */
void trace_destroy_kernel_channel(struct ltt_kernel_channel *channel)
{
struct ltt_kernel_stream *stream, *stmp;
free(channel);
}
+/*
+ * Cleanup kernel metadata structure.
+ */
void trace_destroy_kernel_metadata(struct ltt_kernel_metadata *metadata)
{
DBG("[trace] Closing metadata fd %d", metadata->fd);
free(metadata);
}
+/*
+ * Cleanup kernel session structure
+ */
void trace_destroy_kernel_session(struct ltt_kernel_session *session)
{
struct ltt_kernel_channel *channel, *ctmp;