X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=liblttng-ust%2Flttng-ust-abi.c;h=126863d7455f20ab127006e3b880590273a01fd1;hb=e450e3396b0bfe998e3bde6aef7dc3b4232f8edb;hp=ac59d15a44bd3ecab5e7906d148114ab8c7b8561;hpb=3fbec7dc3645facd9e809cf161ba3435a377ce56;p=deliverable%2Flttng-ust.git diff --git a/liblttng-ust/lttng-ust-abi.c b/liblttng-ust/lttng-ust-abi.c index ac59d15a..126863d7 100644 --- a/liblttng-ust/lttng-ust-abi.c +++ b/liblttng-ust/lttng-ust-abi.c @@ -38,19 +38,25 @@ */ #define _LGPL_SOURCE -#include -#include +#include +#include + #include #include + +#include +#include +#include +#include #include #include -#include -#include "tracepoint-internal.h" +#include #include -#include -#include "lttng-tracer.h" -#include "../libringbuffer/shm.h" + #include "../libringbuffer/frontend_types.h" +#include "../libringbuffer/shm.h" +#include "lttng-tracer.h" +#include "string-utils.h" #define OBJ_NAME_LEN 16 @@ -209,7 +215,7 @@ int lttng_ust_objd_unref(int id, int is_owner) } if ((--obj->u.s.f_count) == 1) { const struct lttng_ust_objd_ops *ops = objd_ops(id); - + if (ops->release) ops->release(id); objd_free(id); @@ -528,7 +534,9 @@ invalid: { int close_ret; + lttng_ust_lock_fd_tracker(); close_ret = close(wakeup_fd); + lttng_ust_unlock_fd_tracker(); if (close_ret) { PERROR("close"); } @@ -789,7 +797,7 @@ static int lttng_abi_create_enabler(int channel_objd, struct lttng_ust_event *event_param, void *owner, - enum lttng_enabler_type type) + enum lttng_enabler_format_type format_type) { struct lttng_channel *channel = objd_private(channel_objd); struct lttng_enabler *enabler; @@ -805,7 +813,7 @@ int lttng_abi_create_enabler(int channel_objd, * We tolerate no failure path after event creation. It will stay * invariant for the rest of the session. */ - enabler = lttng_enabler_create(type, event_param, channel); + enabler = lttng_enabler_create(format_type, event_param, channel); if (!enabler) { ret = -ENOMEM; goto event_error; @@ -877,13 +885,17 @@ long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg, { struct lttng_ust_event *event_param = (struct lttng_ust_event *) arg; - if (event_param->name[strlen(event_param->name) - 1] == '*') { - /* If ends with wildcard, create wildcard. */ + + if (strutils_is_star_glob_pattern(event_param->name)) { + /* + * If the event name is a star globbing pattern, + * we create the special star globbing enabler. + */ return lttng_abi_create_enabler(objd, event_param, - owner, LTTNG_ENABLER_WILDCARD); + owner, LTTNG_ENABLER_FORMAT_STAR_GLOB); } else { return lttng_abi_create_enabler(objd, event_param, - owner, LTTNG_ENABLER_EVENT); + owner, LTTNG_ENABLER_FORMAT_EVENT); } } case LTTNG_UST_CONTEXT: