Add --create-trace option to ustctl
authorPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Fri, 15 Jan 2010 22:56:52 +0000 (17:56 -0500)
committerPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Fri, 15 Jan 2010 22:56:52 +0000 (17:56 -0500)
libust/tracectl.c
libustcmd/ustcmd.c
libustcmd/ustcmd.h
ustctl/ustctl.c

index 80d09ae093045fa88b6c1fcac8923ced5ef2402b..873b0f66b432e150853363fb1456f5c0b3e7fc55 100644 (file)
@@ -370,6 +370,29 @@ void *listener_main(void *p)
                                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");
 
index d573a7fe2ef84ae845c698053322808252d2778d..d22fb5236f4b01f707a554c313216f4e84cfeec2 100644 (file)
@@ -137,6 +137,24 @@ int ustcmd_setup_and_start(pid_t pid)
        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.
  *
index da4718b0943b3d317525355834c062e43a30decb..a494bcff3b94068ff5595ea76a8546cac881a544 100644 (file)
@@ -34,6 +34,7 @@ extern int ustcmd_set_marker_state(const char *, int, pid_t);
 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 *);
index 789dfe0feeb7c8d44da14ebc97ae23cef75969c3..3ff2fb78e16398ee78a9a6be60a5955a1aca1298 100644 (file)
@@ -27,6 +27,7 @@
 #include "usterr.h"
 
 enum command {
+       CREATE_TRACE,
        START_TRACE,
        STOP_TRACE,
        START,
@@ -52,6 +53,7 @@ void usage(void)
        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\
@@ -72,6 +74,7 @@ int parse_opts_long(int argc, char **argv, struct ust_opts *opts)
        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},
@@ -130,7 +133,10 @@ int parse_opts_long(int argc, char **argv, struct ust_opts *opts)
                        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 */
@@ -212,6 +218,14 @@ int main(int argc, char *argv[])
 
        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) {
This page took 0.045068 seconds and 4 git commands to generate.