#include <lttng/lttng.h>
-#include "lttng.h"
#include "lttngerr.h"
+#include "options.h"
/* Variables */
static char *progname;
static int process_opt_list_apps(void);
static int process_opt_list_sessions(void);
static int process_opt_list_traces(void);
+static int process_opt_kernel_list_events(void);
static int process_opt_create_session(void);
static int process_kernel_create_trace(void);
static int process_opt_kernel_event(void);
goto error;
}
+ if (opt_list_events) {
+ if (opt_trace_kernel) {
+ ret = process_opt_kernel_list_events();
+ if (ret < 0) {
+ goto end;
+ }
+ } else if (opt_trace_pid != 0) {
+ // TODO
+ }
+ goto error;
+ }
+
/* Session creation or auto session set on */
if (auto_session || opt_create_session) {
DBG("Creating a new session");
}
}
- if (opt_event_list != NULL) {
+ if (opt_event_list != NULL || opt_enable_all_event) {
ret = process_opt_kernel_event();
if (ret < 0) {
goto end;
}
- } else {
- // Enable all events
}
if (auto_trace || opt_start_trace) {
}
/*
- * process_kernel_event
+ * process_opt_kernel_list_events
+ *
+ * Ask for all trace events in the kernel and pretty print them.
+ */
+static int process_opt_kernel_list_events(void)
+{
+ int ret, pos, size;
+ char *event_list, *event, *ptr;
+
+ DBG("Getting all tracing events");
+
+ ret = lttng_kernel_list_events(&event_list);
+ if (ret < 0) {
+ ERR("Unable to list events.");
+ return ret;
+ }
+
+ MSG("Kernel tracepoints:\n-------------");
+
+ ptr = event_list;
+ while ((size = sscanf(ptr, "event { name = %m[^;]; };%n\n", &event, &pos)) == 1) {
+ MSG(" - %s", event);
+ /* Move pointer to the next line */
+ ptr += pos + 1;
+ free(event);
+ }
+
+ free(event_list);
+
+ return 0;
+}
+
+/*
+ * process_opt_kernel_event
*
* Enable kernel event from the command line list given.
*/
int ret;
char *event_name;
+ if (opt_enable_all_event) {
+ ret = lttng_kernel_enable_event(NULL);
+ if (ret < 0) {
+ ERR("%s", lttng_get_readable_code(ret));
+ } else {
+ MSG("All kernel event enabled");
+ }
+
+ goto end;
+ }
+
event_name = strtok(opt_event_list, ",");
while (event_name != NULL) {
DBG("Enabling kernel event %s", event_name);
event_name = strtok(NULL, ",");
}
+end:
return 0;
}
}
/* If start trace, auto start tracing */
- if (opt_start_trace || opt_event_list != NULL) {
+ if (opt_start_trace || opt_event_list != NULL || opt_enable_all_event) {
DBG("Requesting auto tracing");
auto_trace = 1;
}
int ret;
char *pathname = NULL, *alloc_pathname = NULL;
- ret = lttng_check_session_daemon();
- if (ret < 0) {
+ ret = lttng_session_daemon_alive();
+ if (ret == 0) { /* not alive */
/* Try command line option path */
if (opt_sessiond_path != NULL) {
ret = access(opt_sessiond_path, F_OK | X_OK);