*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
* 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)
/*
* Allocate and initialize a ust event. Set name and event type.
+ * We own filter_expression, filter, and exclusion.
*
* Return pointer to structure or NULL.
*/
error_free_event:
free(lue);
error:
+ free(filter_expression);
+ free(filter);
+ free(exclusion);
return NULL;
}
/* 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) {
lttng_ht_del(session->agents, &iter);
agent_destroy(agt);
}
+ rcu_read_unlock();
/* Cleanup UID buffer registry object(s). */
cds_list_for_each_entry_safe(reg, sreg, &session->buffer_reg_uid_list,