return (void *)1;
}
}
+ else if(!strcmp(recvbuf, "trace_create")) {
+ DBG("trace create");
+
+ result = ltt_trace_setup(trace_name);
+ if(result < 0) {
+ ERR("ltt_trace_setup failed");
+ return (void *)1;
+ }
+
+ result = ltt_trace_set_type(trace_name, trace_type);
+ if(result < 0) {
+ ERR("ltt_trace_set_type failed");
+ return (void *)1;
+ }
+
+ result = ltt_trace_alloc(trace_name);
+ if(result < 0) {
+ ERR("ltt_trace_alloc failed");
+ return (void *)1;
+ }
+
+ inform_consumer_daemon(trace_name);
+ }
else if(!strcmp(recvbuf, "trace_start")) {
DBG("trace start");
return 0;
}
+/**
+ * Creates an UST trace according to a PID.
+ *
+ * @param pid Traced process ID
+ * @return 0 if successful, or error USTCMD_ERR_GEN
+ */
+int ustcmd_create_trace(pid_t pid)
+{
+ int result;
+
+ result = ustcmd_send_cmd("trace_create", pid, NULL);
+ if (result) {
+ return USTCMD_ERR_GEN;
+ }
+
+ return 0;
+}
+
/**
* Starts an UST trace according to a PID.
*
extern int ustcmd_destroy_trace(pid_t);
extern int ustcmd_setup_and_start(pid_t);
extern int ustcmd_stop_trace(pid_t);
+extern int ustcmd_create_trace(pid_t);
extern int ustcmd_start_trace(pid_t);
extern int ustcmd_free_cmsf(struct marker_status *);
extern unsigned int ustcmd_count_nl(const char *);
#include "usterr.h"
enum command {
+ CREATE_TRACE,
START_TRACE,
STOP_TRACE,
START,
fprintf(stderr, "\nControl the tracing of a process that supports LTTng Userspace Tracing.\n\
\n\
Commands:\n\
+ --create-trace\t\t\tCreate trace\n\
--start-trace\t\t\tStart tracing\n\
--stop-trace\t\t\tStop tracing\n\
--destroy-trace\t\t\tDestroy the trace\n\
while (1) {
int option_index = 0;
static struct option long_options[] = {
+ {"create-trace", 0, 0, 1012},
{"start-trace", 0, 0, 1000},
{"stop-trace", 0, 0, 1001},
{"destroy-trace", 0, 0, 1002},
exit(0);
case 1010:
printf("Version 0.1\n");
-
+ break;
+ case 1012:
+ opts->cmd = CREATE_TRACE;
+ break;
default:
/* unknown option or other error; error is
printed by getopt, just return */
while(*pidit != -1) {
switch (opts.cmd) {
+ case CREATE_TRACE:
+ result = ustcmd_create_trace(*pidit);
+ if (result) {
+ ERR("error while trying to create trace with PID %u\n", (unsigned int) *pidit);
+ break;
+ }
+ break;
+
case START_TRACE:
result = ustcmd_start_trace(*pidit);
if (result) {