#include <urcu/list.h>
#include <lttng/ust-events.h>
#include <lttng/ust-version.h>
+#include <lttng/tracepoint.h>
+#include "tracepoint-internal.h"
#include <usterr-signal-safe.h>
#include <helper.h>
#include "ltt-tracer.h"
-#include "tracepoint-internal.h"
static int lttng_ust_abi_close_in_progress;
static const struct lttng_ust_objd_ops lttng_channel_ops;
static const struct lttng_ust_objd_ops lttng_metadata_ops;
static const struct lttng_ust_objd_ops lttng_event_ops;
-static const struct lttng_ust_objd_ops lttng_loglevel_ops;
static const struct lttng_ust_objd_ops lttng_wildcard_ops;
static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops;
static const struct lttng_ust_objd_ops lttng_tracepoint_list_ops;
static struct lttng_ust_event metadata_params = {
.instrumentation = LTTNG_UST_TRACEPOINT,
.name = "lttng_ust:metadata",
+ .loglevel_type = LTTNG_UST_LOGLEVEL_ALL,
+ .loglevel = TRACE_DEFAULT,
};
struct ltt_event *event;
int ret;
return ret;
}
-static
-int lttng_abi_create_loglevel(int channel_objd,
- struct lttng_ust_event *event_param)
-{
- struct ltt_channel *channel = objd_private(channel_objd);
- struct session_loglevel *loglevel;
- int loglevel_objd, ret;
-
- event_param->name[LTTNG_UST_SYM_NAME_LEN - 1] = '\0';
- loglevel_objd = objd_alloc(NULL, <tng_loglevel_ops);
- if (loglevel_objd < 0) {
- ret = loglevel_objd;
- goto objd_error;
- }
- /*
- * We tolerate no failure path after loglevel creation. It will
- * stay invariant for the rest of the session.
- */
- ret = ltt_loglevel_create(channel, event_param, &loglevel);
- if (ret < 0) {
- goto loglevel_error;
- }
- objd_set_private(loglevel_objd, loglevel);
- /* The loglevel holds a reference on the channel */
- objd_ref(channel_objd);
- return loglevel_objd;
-
-loglevel_error:
- {
- int err;
-
- err = lttng_ust_objd_unref(loglevel_objd);
- assert(!err);
- }
-objd_error:
- return ret;
-}
-
static
int lttng_abi_create_wildcard(int channel_objd,
struct lttng_ust_event *event_param)
{
struct lttng_ust_event *event_param =
(struct lttng_ust_event *) arg;
- if (event_param->instrumentation == LTTNG_UST_TRACEPOINT_LOGLEVEL) {
- return lttng_abi_create_loglevel(objd, event_param);
+ if (event_param->name[strlen(event_param->name) - 1] == '*') {
+ /* If ends with wildcard, create wildcard. */
+ return lttng_abi_create_wildcard(objd, event_param);
} else {
- if (event_param->name[strlen(event_param->name) - 1] == '*') {
- /* If ends with wildcard, create wildcard. */
- return lttng_abi_create_wildcard(objd, event_param);
- } else {
- return lttng_abi_create_event(objd, event_param);
- }
+ return lttng_abi_create_event(objd, event_param);
}
}
case LTTNG_UST_CONTEXT:
.cmd = lttng_event_cmd,
};
-/**
- * lttng_loglevel_cmd - lttng control through object descriptors
- *
- * @objd: the object descriptor
- * @cmd: the command
- * @arg: command arg
- * @uargs: UST arguments (internal)
- *
- * This object descriptor implements lttng commands:
- * LTTNG_UST_CONTEXT
- * Prepend a context field to each record of events of this
- * loglevel.
- * LTTNG_UST_ENABLE
- * Enable recording for these loglevel events (weak enable)
- * LTTNG_UST_DISABLE
- * Disable recording for these loglevel events (strong disable)
- */
-static
-long lttng_loglevel_cmd(int objd, unsigned int cmd, unsigned long arg,
- union ust_args *uargs)
-{
- struct session_loglevel *loglevel = objd_private(objd);
-
- switch (cmd) {
- case LTTNG_UST_CONTEXT:
- return -ENOSYS; /* not implemented yet */
-#if 0
- return lttng_abi_add_context(objd,
- (struct lttng_ust_context *) arg,
- &loglevel->ctx, loglevel->chan->session);
-#endif
- case LTTNG_UST_ENABLE:
- return ltt_loglevel_enable(loglevel);
- case LTTNG_UST_DISABLE:
- return ltt_loglevel_disable(loglevel);
- default:
- return -EINVAL;
- }
-}
-
-static
-int lttng_loglevel_release(int objd)
-{
- struct session_loglevel *loglevel = objd_private(objd);
-
- if (loglevel)
- return lttng_ust_objd_unref(loglevel->chan->objd);
- return 0;
-}
-
-/* TODO: filter control ioctl */
-static const struct lttng_ust_objd_ops lttng_loglevel_ops = {
- .release = lttng_loglevel_release,
- .cmd = lttng_loglevel_cmd,
-};
-
/**
* lttng_wildcard_cmd - lttng control through object descriptors
*