Fix loglevel selection, implement loglevel help.
[lttng-tools.git] / src / bin / lttng-sessiond / trace-ust.c
index a947dada5b8972b574d304e5504009718a7dcdaa..236e7685b5900cf14362af6a1e8202911604f28b 100644 (file)
@@ -21,8 +21,8 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <common/lttngerr.h>
-#include <common/lttng-share.h>
+#include <common/common.h>
+#include <common/defaults.h>
 
 #include "trace-ust.h"
 
@@ -213,9 +213,6 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev)
        case LTTNG_EVENT_TRACEPOINT:
                lue->attr.instrumentation = LTTNG_UST_TRACEPOINT;
                break;
-       case LTTNG_EVENT_TRACEPOINT_LOGLEVEL:
-               lue->attr.instrumentation = LTTNG_UST_TRACEPOINT_LOGLEVEL;
-               break;
        default:
                ERR("Unknown ust instrumentation type (%d)", ev->type);
                goto error_free_event;
@@ -225,12 +222,32 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev)
        strncpy(lue->attr.name, ev->name, LTTNG_UST_SYM_NAME_LEN);
        lue->attr.name[LTTNG_UST_SYM_NAME_LEN - 1] = '\0';
 
+       switch (ev->loglevel_type) {
+       case LTTNG_EVENT_LOGLEVEL_ALL:
+               lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_ALL;
+               break;
+       case LTTNG_EVENT_LOGLEVEL_RANGE:
+               lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_RANGE;
+               break;
+       case LTTNG_EVENT_LOGLEVEL_SINGLE:
+               lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_SINGLE;
+               break;
+       default:
+               ERR("Unknown ust loglevel type (%d)", ev->type);
+               goto error_free_event;
+       }
+
+       /* Copy loglevel */
+       lue->attr.loglevel = ev->loglevel;
+
        /* Init node */
        lttng_ht_node_init_str(&lue->node, lue->attr.name);
        /* Alloc context hash tables */
        lue->ctx = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
 
-       DBG2("Trace UST event %s created", lue->attr.name);
+       DBG2("Trace UST event %s, loglevel (%d,%d) created",
+               lue->attr.name, lue->attr.loglevel_type,
+               lue->attr.loglevel);
 
        return lue;
 
@@ -289,6 +306,25 @@ struct ltt_ust_context *trace_ust_create_context(
                struct lttng_event_context *ctx)
 {
        struct ltt_ust_context *uctx;
+       enum lttng_ust_context_type utype;
+
+       switch (ctx->ctx) {
+       case LTTNG_EVENT_CONTEXT_VTID:
+               utype = LTTNG_UST_CONTEXT_VTID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VPID:
+               utype = LTTNG_UST_CONTEXT_VPID;
+               break;
+       case LTTNG_EVENT_CONTEXT_PTHREAD_ID:
+               utype = LTTNG_UST_CONTEXT_PTHREAD_ID;
+               break;
+       case LTTNG_EVENT_CONTEXT_PROCNAME:
+               utype = LTTNG_UST_CONTEXT_PROCNAME;
+               break;
+       default:
+               ERR("Invalid UST context");
+               return NULL;
+       }
 
        uctx = zmalloc(sizeof(struct ltt_ust_context));
        if (uctx == NULL) {
@@ -296,7 +332,7 @@ struct ltt_ust_context *trace_ust_create_context(
                goto error;
        }
 
-       uctx->ctx.ctx = ctx->ctx;
+       uctx->ctx.ctx = utype;
        lttng_ht_node_init_ulong(&uctx->node, (unsigned long) uctx->ctx.ctx);
 
        return uctx;
This page took 0.023855 seconds and 4 git commands to generate.