X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.c;h=9c7cfb690221f11778196bb83fa98209162c4091;hb=f11e84c2c33f6e2f4da8436012bcc61b3291b0d7;hp=80644ac8330b438da015b7f149ff10cee002bb5b;hpb=db7586006bc1a2b9057a2c108bf1e7d20fd6903f;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/trace-ust.c b/src/bin/lttng-sessiond/trace-ust.c index 80644ac83..9c7cfb690 100644 --- a/src/bin/lttng-sessiond/trace-ust.c +++ b/src/bin/lttng-sessiond/trace-ust.c @@ -139,7 +139,7 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, luc = zmalloc(sizeof(struct ltt_ust_channel)); if (luc == NULL) { - perror("ltt_ust_channel zmalloc"); + PERROR("ltt_ust_channel zmalloc"); goto error; } @@ -171,7 +171,7 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, /* Set trace output path */ ret = snprintf(luc->pathname, PATH_MAX, "%s", path); if (ret < 0) { - perror("asprintf ust create channel"); + PERROR("asprintf ust create channel"); goto error_free_channel; } @@ -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,33 @@ 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; + lue->attr.loglevel = -1; /* Force to -1 */ + break; + case LTTNG_EVENT_LOGLEVEL_RANGE: + lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_RANGE; + lue->attr.loglevel = ev->loglevel; + break; + case LTTNG_EVENT_LOGLEVEL_SINGLE: + lue->attr.loglevel_type = LTTNG_UST_LOGLEVEL_SINGLE; + lue->attr.loglevel = ev->loglevel; + break; + default: + ERR("Unknown ust loglevel type (%d)", ev->loglevel_type); + goto error_free_event; + } + + /* 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; @@ -252,7 +270,7 @@ struct ltt_ust_metadata *trace_ust_create_metadata(char *path) lum = zmalloc(sizeof(struct ltt_ust_metadata)); if (lum == NULL) { - perror("ust metadata zmalloc"); + PERROR("ust metadata zmalloc"); goto error; } @@ -268,7 +286,7 @@ struct ltt_ust_metadata *trace_ust_create_metadata(char *path) /* Set metadata trace path */ ret = snprintf(lum->pathname, PATH_MAX, "%s/metadata", path); if (ret < 0) { - perror("asprintf ust metadata"); + PERROR("asprintf ust metadata"); goto error_free_metadata; } @@ -289,6 +307,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 +333,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;