*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <errno.h>
#include <inttypes.h>
#include <pthread.h>
}
goto error;
}
- } else {
- ret = disable_ust_event(app, ua_sess, ua_event);
- if (ret < 0) {
- /*
- * If we hit an EPERM, something is wrong with our disable call. If
- * we get an EEXIST, there is a problem on the tracer side since we
- * just created it.
- */
- switch (ret) {
- case -LTTNG_UST_ERR_PERM:
- /* Code flow problem */
- assert(0);
- case -LTTNG_UST_ERR_EXIST:
- /* It's OK for our use case. */
- ret = 0;
- break;
- default:
- break;
- }
- goto error;
- }
}
error:
/*
* Lookup for an ust app context from an lttng_ust_context.
*
+ * Must be called while holding RCU read side lock.
* Return an ust_app_ctx object or NULL on error.
*/
static
cds_list_for_each_entry(reg, &usess->buffer_reg_uid_list, lnode) {
struct buffer_reg_channel *reg_chan;
+ rcu_read_lock();
cds_lfht_for_each_entry(reg->registry->channels->ht, &iter.iter,
reg_chan, node.node) {
ret += reg_chan->stream_count;
}
+ rcu_read_unlock();
}
break;
}