*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <assert.h>
#include <urcu/uatomic.h>
*
* Return the number of events or else a negative value.
*/
-int agent_list_events(struct lttng_event **events)
+int agent_list_events(struct lttng_event **events,
+ enum lttng_domain_type domain)
{
int ret;
size_t nbmem, count = 0;
assert(events);
+ DBG2("Agent listing events for domain %d", domain);
+
nbmem = UST_APP_EVENT_LIST_SIZE;
tmp_events = zmalloc(nbmem * sizeof(*tmp_events));
if (!tmp_events) {
ssize_t nb_ev;
struct lttng_event *agent_events;
+ /* Skip domain not asked by the list. */
+ if (app->domain != domain) {
+ continue;
+ }
+
nb_ev = list_events(app, &agent_events);
if (nb_ev < 0) {
ret = nb_ev;
/*
* Delete agent application from the global hash table.
+ *
+ * rcu_read_lock() must be held by the caller.
*/
void agent_delete_app(struct agent_app *app)
{
DBG3("Agent deleting app pid: %d and sock: %d", app->pid, app->sock->fd);
iter.iter.node = &app->node.node;
- rcu_read_lock();
ret = lttng_ht_del(agent_apps_ht_by_sock, &iter);
- rcu_read_unlock();
assert(!ret);
}
ret = agent_init(agt);
if (ret < 0) {
free(agt);
+ agt = NULL;
goto error;
}
return caa_container_of(node, struct agent_event, node);
error:
- DBG3("Agent NOT found %s.", name);
+ DBG3("Agent event NOT found %s.", name);
return NULL;
}
{
assert(event);
+ free(event->filter);
free(event);
}
}
rcu_read_unlock();
- lttng_ht_destroy(agt->events);
+ ht_cleanup_push(agt->events);
}
/*