projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update hardcoded loglevel
[lttng-ust.git]
/
liblttng-ust
/
lttng-ust-abi.c
diff --git
a/liblttng-ust/lttng-ust-abi.c
b/liblttng-ust/lttng-ust-abi.c
index 25f213bbc1ce1bf72fd09194459177f9bfce5064..deb3311b882ca7dd682c4df32eb6fb3b06d754e5 100644
(file)
--- a/
liblttng-ust/lttng-ust-abi.c
+++ b/
liblttng-ust/lttng-ust-abi.c
@@
-29,10
+29,11
@@
#include <urcu/list.h>
#include <lttng/ust-events.h>
#include <lttng/ust-version.h>
#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 <usterr-signal-safe.h>
#include <helper.h>
#include "ltt-tracer.h"
-#include "tracepoint-internal.h"
static int lttng_ust_abi_close_in_progress;
static int lttng_ust_abi_close_in_progress;
@@
-203,7
+204,7
@@
static const struct lttng_ust_objd_ops lttng_session_ops;
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_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 const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops;
static const struct lttng_ust_objd_ops lttng_tracepoint_list_ops;
@@
-280,6
+281,7
@@
long lttng_abi_add_context(int objd,
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This descriptor implements lttng commands:
* LTTNG_UST_SESSION
*
* This descriptor implements lttng commands:
* LTTNG_UST_SESSION
@@
-294,7
+296,8
@@
long lttng_abi_add_context(int objd,
* The returned session will be deleted when its file descriptor is closed.
*/
static
* The returned session will be deleted when its file descriptor is closed.
*/
static
-long lttng_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
switch (cmd) {
case LTTNG_UST_SESSION:
{
switch (cmd) {
case LTTNG_UST_SESSION:
@@
-328,6
+331,8
@@
void lttng_metadata_create_events(int channel_objd)
static struct lttng_ust_event metadata_params = {
.instrumentation = LTTNG_UST_TRACEPOINT,
.name = "lttng_ust:metadata",
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;
};
struct ltt_event *event;
int ret;
@@
-349,7
+354,8
@@
create_error:
int lttng_abi_create_channel(int session_objd,
struct lttng_ust_channel *chan_param,
int lttng_abi_create_channel(int session_objd,
struct lttng_ust_channel *chan_param,
- enum channel_type channel_type)
+ enum channel_type channel_type,
+ union ust_args *uargs)
{
struct ltt_session *session = objd_private(session_objd);
const struct lttng_ust_objd_ops *ops;
{
struct ltt_session *session = objd_private(session_objd);
const struct lttng_ust_objd_ops *ops;
@@
-398,9
+404,9
@@
int lttng_abi_create_channel(int session_objd,
chan_param->num_subbuf,
chan_param->switch_timer_interval,
chan_param->read_timer_interval,
chan_param->num_subbuf,
chan_param->switch_timer_interval,
chan_param->read_timer_interval,
- &
chan_param->
shm_fd,
- &
chan_param->
wait_fd,
- &
chan_param->
memory_map_size,
+ &
uargs->channel.
shm_fd,
+ &
uargs->channel.
wait_fd,
+ &
uargs->channel.
memory_map_size,
&chan_priv_init);
if (!chan) {
ret = -EINVAL;
&chan_priv_init);
if (!chan) {
ret = -EINVAL;
@@
-434,6
+440,7
@@
objd_error:
* @obj: the object
* @cmd: the command
* @arg: command arg
* @obj: the object
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This descriptor implements lttng commands:
* LTTNG_UST_CHANNEL
*
* This descriptor implements lttng commands:
* LTTNG_UST_CHANNEL
@@
-448,7
+455,8
@@
objd_error:
* The returned channel will be deleted when its file descriptor is closed.
*/
static
* The returned channel will be deleted when its file descriptor is closed.
*/
static
-long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
struct ltt_session *session = objd_private(objd);
{
struct ltt_session *session = objd_private(objd);
@@
-456,7
+464,7
@@
long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg)
case LTTNG_UST_CHANNEL:
return lttng_abi_create_channel(objd,
(struct lttng_ust_channel *) arg,
case LTTNG_UST_CHANNEL:
return lttng_abi_create_channel(objd,
(struct lttng_ust_channel *) arg,
- PER_CPU_CHANNEL);
+ PER_CPU_CHANNEL
, uargs
);
case LTTNG_UST_SESSION_START:
case LTTNG_UST_ENABLE:
return ltt_session_enable(session);
case LTTNG_UST_SESSION_START:
case LTTNG_UST_ENABLE:
return ltt_session_enable(session);
@@
-466,7
+474,7
@@
long lttng_session_cmd(int objd, unsigned int cmd, unsigned long arg)
case LTTNG_UST_METADATA:
return lttng_abi_create_channel(objd,
(struct lttng_ust_channel *) arg,
case LTTNG_UST_METADATA:
return lttng_abi_create_channel(objd,
(struct lttng_ust_channel *) arg,
- METADATA_CHANNEL);
+ METADATA_CHANNEL
, uargs
);
default:
return -EINVAL;
}
default:
return -EINVAL;
}
@@
-499,7
+507,8
@@
static const struct lttng_ust_objd_ops lttng_session_ops = {
};
static
};
static
-long lttng_tracepoint_list_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_tracepoint_list_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
struct lttng_ust_tracepoint_list *list = objd_private(objd);
struct lttng_ust_tracepoint_iter *tp =
{
struct lttng_ust_tracepoint_list *list = objd_private(objd);
struct lttng_ust_tracepoint_iter *tp =
@@
-586,7
+595,8
@@
struct stream_priv_data {
};
static
};
static
-int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info)
+int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info,
+ union ust_args *uargs)
{
struct ltt_channel *channel = objd_private(channel_objd);
struct lttng_ust_lib_ring_buffer *buf;
{
struct ltt_channel *channel = objd_private(channel_objd);
struct lttng_ust_lib_ring_buffer *buf;
@@
-594,7
+604,9
@@
int lttng_abi_open_stream(int channel_objd, struct lttng_ust_stream *info)
int stream_objd, ret;
buf = channel->ops->buffer_read_open(channel->chan, channel->handle,
int stream_objd, ret;
buf = channel->ops->buffer_read_open(channel->chan, channel->handle,
- &info->shm_fd, &info->wait_fd, &info->memory_map_size);
+ &uargs->stream.shm_fd,
+ &uargs->stream.wait_fd,
+ &uargs->stream.memory_map_size);
if (!buf)
return -ENOENT;
if (!buf)
return -ENOENT;
@@
-660,37
+672,37
@@
objd_error:
}
static
}
static
-int lttng_abi_create_
loglevel
(int channel_objd,
+int lttng_abi_create_
wildcard
(int channel_objd,
struct lttng_ust_event *event_param)
{
struct ltt_channel *channel = objd_private(channel_objd);
struct lttng_ust_event *event_param)
{
struct ltt_channel *channel = objd_private(channel_objd);
- struct session_
loglevel *loglevel
;
- int
loglevel
_objd, ret;
+ struct session_
wildcard *wildcard
;
+ int
wildcard
_objd, ret;
event_param->name[LTTNG_UST_SYM_NAME_LEN - 1] = '\0';
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;
+
wildcard_objd = objd_alloc(NULL, <tng_wildcard
_ops);
+ if (
wildcard
_objd < 0) {
+ ret =
wildcard
_objd;
goto objd_error;
}
/*
goto objd_error;
}
/*
- * We tolerate no failure path after
loglevel
creation. It will
+ * We tolerate no failure path after
wildcard
creation. It will
* stay invariant for the rest of the session.
*/
* stay invariant for the rest of the session.
*/
- ret = ltt_
loglevel_create(channel, event_param, &loglevel
);
+ ret = ltt_
wildcard_create(channel, event_param, &wildcard
);
if (ret < 0) {
if (ret < 0) {
- goto
loglevel
_error;
+ goto
wildcard
_error;
}
}
- objd_set_private(
loglevel_objd, loglevel
);
- /* The
loglevel
holds a reference on the channel */
+ objd_set_private(
wildcard_objd, wildcard
);
+ /* The
wildcard
holds a reference on the channel */
objd_ref(channel_objd);
objd_ref(channel_objd);
- return
loglevel
_objd;
+ return
wildcard
_objd;
-
loglevel
_error:
+
wildcard
_error:
{
int err;
{
int err;
- err = lttng_ust_objd_unref(
loglevel
_objd);
+ err = lttng_ust_objd_unref(
wildcard
_objd);
assert(!err);
}
objd_error:
assert(!err);
}
objd_error:
@@
-703,6
+715,7
@@
objd_error:
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This object descriptor implements lttng commands:
* LTTNG_UST_STREAM
*
* This object descriptor implements lttng commands:
* LTTNG_UST_STREAM
@@
-720,7
+733,8
@@
objd_error:
* Channel and event file descriptors also hold a reference on the session.
*/
static
* Channel and event file descriptors also hold a reference on the session.
*/
static
-long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
struct ltt_channel *channel = objd_private(objd);
{
struct ltt_channel *channel = objd_private(objd);
@@
-731,14
+745,15
@@
long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg)
stream = (struct lttng_ust_stream *) arg;
/* stream used as output */
stream = (struct lttng_ust_stream *) arg;
/* stream used as output */
- return lttng_abi_open_stream(objd, stream);
+ return lttng_abi_open_stream(objd, stream
, uargs
);
}
case LTTNG_UST_EVENT:
{
struct lttng_ust_event *event_param =
(struct lttng_ust_event *) arg;
}
case LTTNG_UST_EVENT:
{
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 {
return lttng_abi_create_event(objd, event_param);
}
} else {
return lttng_abi_create_event(objd, event_param);
}
@@
-764,6
+779,7
@@
long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg)
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This object descriptor implements lttng commands:
* LTTNG_UST_STREAM
*
* This object descriptor implements lttng commands:
* LTTNG_UST_STREAM
@@
-772,7
+788,8
@@
long lttng_channel_cmd(int objd, unsigned int cmd, unsigned long arg)
* Channel and event file descriptors also hold a reference on the session.
*/
static
* Channel and event file descriptors also hold a reference on the session.
*/
static
-long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
struct ltt_channel *channel = objd_private(objd);
{
struct ltt_channel *channel = objd_private(objd);
@@
-783,7
+800,7
@@
long lttng_metadata_cmd(int objd, unsigned int cmd, unsigned long arg)
stream = (struct lttng_ust_stream *) arg;
/* stream used as output */
stream = (struct lttng_ust_stream *) arg;
/* stream used as output */
- return lttng_abi_open_stream(objd, stream);
+ return lttng_abi_open_stream(objd, stream
, uargs
);
}
case LTTNG_UST_FLUSH_BUFFER:
return channel->ops->flush_buffer(channel->chan, channel->handle);
}
case LTTNG_UST_FLUSH_BUFFER:
return channel->ops->flush_buffer(channel->chan, channel->handle);
@@
-849,12
+866,14
@@
static const struct lttng_ust_objd_ops lttng_metadata_ops = {
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This object descriptor implements lttng commands:
* (None for now. Access is done directly though shm.)
*/
static
*
* This object descriptor implements lttng commands:
* (None for now. Access is done directly though shm.)
*/
static
-long lttng_rb_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_rb_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
switch (cmd) {
default:
{
switch (cmd) {
default:
@@
-905,6
+924,7
@@
static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops = {
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
+ * @uargs: UST arguments (internal)
*
* This object descriptor implements lttng commands:
* LTTNG_UST_CONTEXT
*
* This object descriptor implements lttng commands:
* LTTNG_UST_CONTEXT
@@
-915,7
+935,8
@@
static const struct lttng_ust_objd_ops lib_ring_buffer_objd_ops = {
* Disable recording for this event (strong disable)
*/
static
* Disable recording for this event (strong disable)
*/
static
-long lttng_event_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_event_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
struct ltt_event *event = objd_private(objd);
{
struct ltt_event *event = objd_private(objd);
@@
-950,25
+971,27
@@
static const struct lttng_ust_objd_ops lttng_event_ops = {
};
/**
};
/**
- * lttng_
loglevel
_cmd - lttng control through object descriptors
+ * lttng_
wildcard
_cmd - lttng control through object descriptors
*
* @objd: the object descriptor
* @cmd: the command
* @arg: command arg
*
* @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
*
* This object descriptor implements lttng commands:
* LTTNG_UST_CONTEXT
* Prepend a context field to each record of events of this
- *
loglevel
.
+ *
wildcard
.
* LTTNG_UST_ENABLE
* LTTNG_UST_ENABLE
- * Enable recording for these
loglevel
events (weak enable)
+ * Enable recording for these
wildcard
events (weak enable)
* LTTNG_UST_DISABLE
* LTTNG_UST_DISABLE
- * Disable recording for these
loglevel
events (strong disable)
+ * Disable recording for these
wildcard
events (strong disable)
*/
static
*/
static
-long lttng_loglevel_cmd(int objd, unsigned int cmd, unsigned long arg)
+long lttng_wildcard_cmd(int objd, unsigned int cmd, unsigned long arg,
+ union ust_args *uargs)
{
{
- struct session_
loglevel *loglevel
= objd_private(objd);
+ struct session_
wildcard *wildcard
= objd_private(objd);
switch (cmd) {
case LTTNG_UST_CONTEXT:
switch (cmd) {
case LTTNG_UST_CONTEXT:
@@
-976,31
+999,31
@@
long lttng_loglevel_cmd(int objd, unsigned int cmd, unsigned long arg)
#if 0
return lttng_abi_add_context(objd,
(struct lttng_ust_context *) arg,
#if 0
return lttng_abi_add_context(objd,
(struct lttng_ust_context *) arg,
- &
loglevel->ctx, loglevel
->chan->session);
+ &
wildcard->ctx, wildcard
->chan->session);
#endif
case LTTNG_UST_ENABLE:
#endif
case LTTNG_UST_ENABLE:
- return ltt_
loglevel_enable(loglevel
);
+ return ltt_
wildcard_enable(wildcard
);
case LTTNG_UST_DISABLE:
case LTTNG_UST_DISABLE:
- return ltt_
loglevel_disable(loglevel
);
+ return ltt_
wildcard_disable(wildcard
);
default:
return -EINVAL;
}
}
static
default:
return -EINVAL;
}
}
static
-int lttng_
loglevel
_release(int objd)
+int lttng_
wildcard
_release(int objd)
{
{
- struct session_
loglevel *loglevel
= objd_private(objd);
+ struct session_
wildcard *wildcard
= objd_private(objd);
- if (
loglevel
)
- return lttng_ust_objd_unref(
loglevel
->chan->objd);
+ if (
wildcard
)
+ return lttng_ust_objd_unref(
wildcard
->chan->objd);
return 0;
}
/* TODO: filter control ioctl */
return 0;
}
/* TODO: filter control ioctl */
-static const struct lttng_ust_objd_ops lttng_
loglevel
_ops = {
- .release = lttng_
loglevel
_release,
- .cmd = lttng_
loglevel
_cmd,
+static const struct lttng_ust_objd_ops lttng_
wildcard
_ops = {
+ .release = lttng_
wildcard
_release,
+ .cmd = lttng_
wildcard
_cmd,
};
void lttng_ust_abi_exit(void)
};
void lttng_ust_abi_exit(void)
This page took
0.03886 seconds
and
4
git commands to generate.