projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: include loglevel type in UST event's primary key
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
event.c
diff --git
a/src/bin/lttng-sessiond/event.c
b/src/bin/lttng-sessiond/event.c
index 85b41bed001f2ae5bfbe9f661ece22ea54d21e9d..71b66a8468cd06410ca3e277fa63750d9b0780df 100644
(file)
--- a/
src/bin/lttng-sessiond/event.c
+++ b/
src/bin/lttng-sessiond/event.c
@@
-50,7
+50,8
@@
static void add_unique_ust_event(struct lttng_ht *ht,
key.name = event->attr.name;
key.filter = (struct lttng_filter_bytecode *) event->filter;
key.name = event->attr.name;
key.filter = (struct lttng_filter_bytecode *) event->filter;
- key.loglevel = event->attr.loglevel;
+ key.loglevel_type = event->attr.loglevel_type;
+ key.loglevel_value = event->attr.loglevel;
key.exclusion = event->exclusion;
node_ptr = cds_lfht_add_unique(ht->ht,
key.exclusion = event->exclusion;
node_ptr = cds_lfht_add_unique(ht->ht,
@@
-207,10
+208,10
@@
int event_ust_enable_tracepoint(struct ltt_ust_session *usess,
rcu_read_lock();
uevent = trace_ust_find_event(uchan->events, event->name, filter,
rcu_read_lock();
uevent = trace_ust_find_event(uchan->events, event->name, filter,
- event->loglevel, exclusion);
- if (
uevent == NULL
) {
+ event->loglevel
_type, event->loglevel
, exclusion);
+ if (
!uevent
) {
uevent = trace_ust_create_event(event, filter_expression,
uevent = trace_ust_create_event(event, filter_expression,
-
filter, exclusion
);
+
filter, exclusion, internal_event
);
/* We have passed ownership */
filter_expression = NULL;
filter = NULL;
/* We have passed ownership */
filter_expression = NULL;
filter = NULL;
@@
-359,7
+360,7
@@
error:
*/
int event_agent_enable_all(struct ltt_ust_session *usess,
struct agent *agt, struct lttng_event *event,
*/
int event_agent_enable_all(struct ltt_ust_session *usess,
struct agent *agt, struct lttng_event *event,
- struct lttng_filter_bytecode *filter)
+ struct lttng_filter_bytecode *filter
,char *filter_expression
)
{
int ret;
struct agent_event *aevent;
{
int ret;
struct agent_event *aevent;
@@
-370,7
+371,7
@@
int event_agent_enable_all(struct ltt_ust_session *usess,
DBG("Event agent enabling ALL events for session %" PRIu64, usess->id);
/* Enable event on agent application through TCP socket. */
DBG("Event agent enabling ALL events for session %" PRIu64, usess->id);
/* Enable event on agent application through TCP socket. */
- ret = event_agent_enable(usess, agt, event, filter);
+ ret = event_agent_enable(usess, agt, event, filter
, filter_expression
);
if (ret != LTTNG_OK) {
goto error;
}
if (ret != LTTNG_OK) {
goto error;
}
@@
-396,7
+397,8
@@
error:
*/
int event_agent_enable(struct ltt_ust_session *usess,
struct agent *agt, struct lttng_event *event,
*/
int event_agent_enable(struct ltt_ust_session *usess,
struct agent *agt, struct lttng_event *event,
- struct lttng_filter_bytecode *filter)
+ struct lttng_filter_bytecode *filter,
+ char *filter_expression)
{
int ret, created = 0;
struct agent_event *aevent;
{
int ret, created = 0;
struct agent_event *aevent;
@@
-406,18
+408,19
@@
int event_agent_enable(struct ltt_ust_session *usess,
assert(agt);
DBG("Event agent enabling %s for session %" PRIu64 " with loglevel type %d "
assert(agt);
DBG("Event agent enabling %s for session %" PRIu64 " with loglevel type %d "
- "and loglevel %d", event->name, usess->id, event->loglevel_type,
- event->loglevel);
+ ", loglevel %d and filter \"%s\"", event->name,
+ usess->id, event->loglevel_type, event->loglevel,
+ filter_expression ? filter_expression : "NULL");
aevent = agent_find_event(event->name, event->loglevel, agt);
if (!aevent) {
aevent = agent_find_event(event->name, event->loglevel, agt);
if (!aevent) {
- aevent = agent_create_event(event->name, filter);
+ aevent = agent_create_event(event->name, event->loglevel,
+ event->loglevel_type, filter,
+ filter_expression);
if (!aevent) {
ret = LTTNG_ERR_NOMEM;
goto error;
}
if (!aevent) {
ret = LTTNG_ERR_NOMEM;
goto error;
}
- aevent->loglevel = event->loglevel;
- aevent->loglevel_type = event->loglevel_type;
created = 1;
}
created = 1;
}
@@
-531,12
+534,13
@@
int event_agent_disable(struct ltt_ust_session *usess, struct agent *agt,
}
/*
}
/*
- * The loglevel is hardcoded with 0 here since the agent ust event is set
- * with the loglevel type to ALL thus the loglevel stays 0. The event's
- * filter is the one handling the loglevel for agent.
+ * Agent UST event has its loglevel type forced to
+ * LTTNG_UST_LOGLEVEL_ALL. The actual loglevel type/value filtering
+ * happens thanks to an UST filter. The following -1 is actually
+ * ignored since the type is LTTNG_UST_LOGLEVEL_ALL.
*/
uevent = trace_ust_find_event(uchan->events, (char *) ust_event_name,
*/
uevent = trace_ust_find_event(uchan->events, (char *) ust_event_name,
- aevent->filter,
0
, NULL);
+ aevent->filter,
LTTNG_UST_LOGLEVEL_ALL, -1
, NULL);
/* If the agent event exists, it must be available on the UST side. */
assert(uevent);
/* If the agent event exists, it must be available on the UST side. */
assert(uevent);
This page took
0.025324 seconds
and
4
git commands to generate.