#include <unistd.h>
#include <urcu/list.h> /* URCU list library (-lurcu) */
-#include <ust/ustctl.h> /* UST control lib (-lust) */
#include <lttng/lttng.h>
#include "liblttsessiondcomm.h"
#include "session.h"
#include "traceable-app.h"
#include "lttng-kconsumerd.h"
+#include "libustctl.h"
/*
* TODO:
sock = ustctl_connect_pid(lta->pid);
if (sock < 0) {
- ERR("Fail connecting to the PID %d\n", pid);
+ ERR("Fail connecting to the PID %d", pid);
}
return sock;
/*
* Exec kconsumerd.
*/
- execlp("kconsumerd", "kconsumerd", "--quiet", NULL);
+ execlp("kconsumerd", "kconsumerd", "--verbose", NULL);
if (errno != 0) {
perror("kernel start consumer exec");
}
/* Create all channel directories */
cds_list_for_each_entry(chan, &session->channel_list.head, list) {
DBG("Creating trace directory at %s", chan->pathname);
+ // TODO: recursive create dir
ret = mkdir(chan->pathname, S_IRWXU | S_IRWXG );
if (ret < 0) {
perror("mkdir trace path");
return ret;
}
+/*
+ * init_kernel_tracer
+ *
+ * Setup necessary data for kernel tracer action.
+ */
+static void init_kernel_tracer(void)
+{
+ /* Set the global kernel tracer fd */
+ kernel_tracer_fd = open(DEFAULT_KERNEL_TRACER_PATH, O_RDWR);
+ if (kernel_tracer_fd < 0) {
+ WARN("No kernel tracer available");
+ kernel_tracer_fd = 0;
+ }
+
+ DBG("Kernel tracer fd %d", kernel_tracer_fd);
+}
+
/*
* process_client_msg
*
case KERNEL_OPEN_METADATA:
case KERNEL_START_TRACE:
case KERNEL_STOP_TRACE:
- /* TODO: reconnect to kernel tracer to check if
- * it's loadded */
+ /* Kernel tracer check */
if (kernel_tracer_fd == 0) {
- ret = LTTCOMM_KERN_NA;
- goto error;
+ init_kernel_tracer();
+ if (kernel_tracer_fd == 0) {
+ ret = LTTCOMM_KERN_NA;
+ goto error;
+ }
}
break;
}
continue;
}
+ // TODO: Validate cmd_ctx including sanity check for security purpose.
+
/*
* This function dispatch the work to the kernel or userspace tracer
* libs and fill the lttcomm_lttng_msg data structure of all the needed
}
clean_command_ctx(cmd_ctx);
+
+ /* End of transmission */
+ close(sock);
}
error:
return ret;
}
-/*
- * init_kernel_tracer
- *
- * Setup necessary data for kernel tracer action.
- */
-static void init_kernel_tracer(void)
-{
- /* Set the global kernel tracer fd */
- kernel_tracer_fd = open(DEFAULT_KERNEL_TRACER_PATH, O_RDWR);
- if (kernel_tracer_fd < 0) {
- WARN("No kernel tracer available");
- kernel_tracer_fd = 0;
- }
-
- DBG("Kernel tracer fd %d", kernel_tracer_fd);
-}
-
/*
* set_kconsumerd_sockets
*