Add channel output method selection
[lttng-tools.git] / include / lttng / lttng.h
index f4b368f1f5833c67573ffe9cbcbb566d17e1f11c..c04d1b4eadb7d996b752570c85d406544ac0f290 100644 (file)
@@ -1,4 +1,8 @@
 /*
+ * lttng.h
+ *
+ * Linux Trace Toolkit Control Library Header File
+ *
  * Copyright (C) 2011 - David Goulet <david.goulet@polymtl.ca>
  *
  * This program is free software; you can redistribute it and/or
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-#ifndef _LIBLTTNGCTL_H
-#define _LIBLTTNGCTL_H
+#ifndef _LTTNG_H
+#define _LTTNG_H
 
-#include <limits.h>
+#include <asm/types.h>
 #include <stdint.h>
-#include <uuid/uuid.h>
+#include <limits.h>
 
-/* Default unix group name for tracing.
+/* Default unix group name for tracing. */
+#define LTTNG_DEFAULT_TRACING_GROUP "tracing"
+
+/* Environment variable to set session daemon binary path. */
+#define LTTNG_SESSIOND_PATH_ENV "LTTNG_SESSIOND_PATH"
+
+/*
+ * Event symbol length.
  */
-#define DEFAULT_TRACING_GROUP "tracing"
+#define LTTNG_SYMBOL_NAME_LEN 128
 
-/* Environment variable to set session daemon
- * binary path.
+enum lttng_event_type {
+       LTTNG_EVENT_TRACEPOINTS,
+       LTTNG_EVENT_KPROBES,
+       LTTNG_EVENT_FUNCTION,
+};
+
+/* Kernel context possible type */
+enum lttng_kernel_context_type {
+       LTTNG_KERNEL_CONTEXT_PID                = 0,
+       LTTNG_KERNEL_CONTEXT_PERF_COUNTER       = 1,
+       LTTNG_KERNEL_CONTEXT_COMM               = 2,
+       LTTNG_KERNEL_CONTEXT_PRIO               = 3,
+       LTTNG_KERNEL_CONTEXT_NICE               = 4,
+       LTTNG_KERNEL_CONTEXT_VPID               = 5,
+       LTTNG_KERNEL_CONTEXT_TID                = 6,
+       LTTNG_KERNEL_CONTEXT_VTID               = 7,
+       LTTNG_KERNEL_CONTEXT_PPID               = 8,
+       LTTNG_KERNEL_CONTEXT_VPPID              = 9,
+};
+
+/* Perf counter attributes */
+struct lttng_kernel_perf_counter_ctx {
+       uint32_t type;
+       uint64_t config;
+       char name[LTTNG_SYMBOL_NAME_LEN];
+};
+
+/* Event/Channel context */
+struct lttng_kernel_context {
+       enum lttng_kernel_context_type ctx;
+       union {
+               struct lttng_kernel_perf_counter_ctx perf_counter;
+       } u;
+};
+
+/*
+ * LTTng consumer mode
  */
-#define LTTNG_SESSIOND_PATH_ENV "LTTNG_SESSIOND_PATH"
+enum lttng_kernel_output {
+       LTTNG_KERNEL_SPLICE       = 0,
+       LTTNG_KERNEL_MMAP         = 1,
+};
+
+/*
+ * Either addr is used or symbol_name and offset.
+ */
+struct lttng_event_kprobe_attr {
+       uint64_t addr;
 
-/* UUID string length (including \0) */
-#define UUID_STR_LEN 37
-/* UUID short string version length (including \0) */
-#define UUID_SHORT_STR_LEN 9
+       uint64_t offset;
+       char symbol_name[LTTNG_SYMBOL_NAME_LEN];
+};
 
-typedef uint64_t u64;
+/*
+ * Function tracer
+ */
+struct lttng_event_function_attr {
+       char symbol_name[LTTNG_SYMBOL_NAME_LEN];
+};
 
-/* Trace type for lttng_trace.
+/*
+ * Generic lttng event
  */
-enum lttng_trace_type {
-       KERNEL, USERSPACE,
+struct lttng_event {
+       char name[LTTNG_SYMBOL_NAME_LEN];
+       enum lttng_event_type type;
+       /* Per event type configuration */
+       union {
+               struct lttng_event_kprobe_attr kprobe;
+               struct lttng_event_function_attr ftrace;
+       } attr;
+};
+
+/* Tracer channel attributes */
+struct lttng_channel_attr {
+       int overwrite;                        /* 1: overwrite, 0: discard */
+       uint64_t subbuf_size;                      /* bytes */
+       uint64_t num_subbuf;                       /* power of 2 */
+       unsigned int switch_timer_interval;   /* usec */
+       unsigned int read_timer_interval;     /* usec */
+       enum lttng_kernel_output output;        /* splice, mmap */
 };
 
-/* Simple structure representing a session.
+/*
+ * Basic session information.
  */
 struct lttng_session {
        char name[NAME_MAX];
-       uuid_t uuid;
+       char path[PATH_MAX];
 };
 
-/* Simple trace representation.
- */
-struct lttng_trace {
+/* Channel information structure */
+struct lttng_channel {
        char name[NAME_MAX];
-       pid_t pid;
-       enum lttng_trace_type type;
+       struct lttng_channel_attr attr;
 };
 
-extern int lttng_create_session(char *name, uuid_t *session_id);
-extern int lttng_destroy_session(uuid_t *uuid);
+/*
+ * Session daemon control
+ */
 extern int lttng_connect_sessiond(void);
+
+extern int lttng_create_session(char *name, char *path);
+
+extern int lttng_destroy_session(char *name);
+
 extern int lttng_disconnect_sessiond(void);
+
+/* Return an allocated array of lttng_session */
+extern int lttng_list_sessions(struct lttng_session **sessions);
+
+extern int lttng_session_daemon_alive(void);
+
+/* Set tracing group for the current execution */
 extern int lttng_set_tracing_group(const char *name);
-extern int lttng_check_session_daemon(void);
+
+extern void lttng_set_session_name(char *name);
+
 extern const char *lttng_get_readable_code(int code);
-extern int lttng_ust_list_apps(pid_t **pids);
-extern int lttng_list_sessions(struct lttng_session **sessions);
-extern int lttng_list_traces(uuid_t *uuid, struct lttng_trace **traces);
-extern void lttng_set_current_session_uuid(uuid_t *uuid);
-extern int lttng_ust_create_trace(pid_t pid);
-extern int lttng_ust_start_trace(pid_t pid);
-extern int lttng_ust_stop_trace(pid_t pid);
 
-#endif /* _LIBLTTNGCTL_H */
+extern int lttng_start_tracing(char *session_name);
+
+extern int lttng_stop_tracing(char *session_name);
+
+//extern int lttng_ust_list_traceable_apps(pid_t **pids);
+
+/*
+ * LTTng Kernel tracer control
+ */
+extern int lttng_kernel_add_context(struct lttng_kernel_context *ctx,
+               char *event_name, char *channel_name);
+
+extern int lttng_kernel_create_channel(struct lttng_channel *chan);
+
+extern int lttng_kernel_enable_event(struct lttng_event *ev, char *channel_name);
+
+extern int lttng_kernel_enable_channel(char *name);
+
+extern int lttng_kernel_disable_event(char *name, char *channel_name);
+
+extern int lttng_kernel_disable_channel(char *name);
+
+extern int lttng_kernel_list_events(char **event_list);
+
+/*
+ * LTTng User-space tracer control
+ */
+
+#endif /* _LTTNG_H */
This page took 0.026085 seconds and 4 git commands to generate.