projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: tests: integer too large for long type
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
trace-ust.c
diff --git
a/src/bin/lttng-sessiond/trace-ust.c
b/src/bin/lttng-sessiond/trace-ust.c
index 1f6fd52736abe4f8abde125fdc092601d491ec46..a3e25aa8adfed1532b95ffb22b67849f21e282fb 100644
(file)
--- a/
src/bin/lttng-sessiond/trace-ust.c
+++ b/
src/bin/lttng-sessiond/trace-ust.c
@@
-16,6
+16,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@
-202,6
+203,9
@@
error:
/*
* Lookup an agent in the session agents hash table by domain type and return
* the object if found else NULL.
/*
* Lookup an agent in the session agents hash table by domain type and return
* the object if found else NULL.
+ *
+ * RCU read side lock must be acquired before calling and only released
+ * once the agent is no longer in scope or being used.
*/
struct agent *trace_ust_find_agent(struct ltt_ust_session *session,
enum lttng_domain_type domain_type)
*/
struct agent *trace_ust_find_agent(struct ltt_ust_session *session,
enum lttng_domain_type domain_type)
@@
-362,6
+366,7
@@
error:
/*
* Allocate and initialize a ust event. Set name and event type.
/*
* Allocate and initialize a ust event. Set name and event type.
+ * We own filter_expression, filter, and exclusion.
*
* Return pointer to structure or NULL.
*/
*
* Return pointer to structure or NULL.
*/
@@
-437,6
+442,9
@@
struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev,
error_free_event:
free(lue);
error:
error_free_event:
free(lue);
error:
+ free(filter_expression);
+ free(filter);
+ free(exclusion);
return NULL;
}
return NULL;
}
@@
-749,10
+757,16
@@
void trace_ust_destroy_session(struct ltt_ust_session *session)
/* Cleaning up UST domain */
destroy_domain_global(&session->domain_global);
/* Cleaning up UST domain */
destroy_domain_global(&session->domain_global);
+ rcu_read_lock();
cds_lfht_for_each_entry(session->agents->ht, &iter.iter, agt, node.node) {
cds_lfht_for_each_entry(session->agents->ht, &iter.iter, agt, node.node) {
- lttng_ht_del(session->agents, &iter);
+ int ret = lttng_ht_del(session->agents, &iter);
+
+ assert(!ret);
agent_destroy(agt);
}
agent_destroy(agt);
}
+ rcu_read_unlock();
+
+ ht_cleanup_push(session->agents);
/* Cleanup UID buffer registry object(s). */
cds_list_for_each_entry_safe(reg, sreg, &session->buffer_reg_uid_list,
/* Cleanup UID buffer registry object(s). */
cds_list_for_each_entry_safe(reg, sreg, &session->buffer_reg_uid_list,
This page took
0.041069 seconds
and
4
git commands to generate.