+ if (created) {
+ jul_destroy_event(jevent);
+ }
+ return ret;
+}
+
+/*
+ * Disable a single JUL event for a given UST session.
+ *
+ * Return LTTNG_OK on success or else a LTTNG_ERR* code.
+ */
+int event_jul_disable(struct ltt_ust_session *usess, char *event_name)
+{
+ int ret;
+ struct jul_event *jevent;
+
+ assert(usess);
+ assert(event_name);
+
+ DBG("Event JUL disabling %s for session %" PRIu64, event_name, usess->id);
+
+ jevent = jul_find_event_by_name(event_name, &usess->domain_jul);
+ if (!jevent) {
+ ret = LTTNG_ERR_UST_EVENT_NOT_FOUND;
+ goto error;
+ }
+
+ /* Already disabled? */
+ if (!jevent->enabled) {
+ goto end;
+ }
+
+ ret = jul_disable_event(jevent);
+ if (ret != LTTNG_OK) {
+ goto error;
+ }
+
+end:
+ return LTTNG_OK;
+
+error:
+ return ret;
+}
+/*
+ * Disable all JUL event for a given UST session.
+ *
+ * Return LTTNG_OK on success or else a LTTNG_ERR* code.
+ */
+int event_jul_disable_all(struct ltt_ust_session *usess)
+{
+ int ret, do_disable = 0;
+ struct jul_event *jevent;
+ struct lttng_ht_iter iter;
+
+ assert(usess);
+
+ /* Enable event on JUL application through TCP socket. */
+ ret = event_jul_disable(usess, "*");
+ if (ret != LTTNG_OK) {
+ if (ret == LTTNG_ERR_UST_EVENT_NOT_FOUND) {
+ /*
+ * This means that no enable all was done before but still a user
+ * could want to disable everything even though the * wild card
+ * event does not exists.
+ */
+ do_disable = 1;
+ } else {
+ goto error;
+ }
+ }
+
+ /* Flag every event that they are now enabled. */
+ rcu_read_lock();
+ cds_lfht_for_each_entry(usess->domain_jul.events->ht, &iter.iter, jevent,
+ node.node) {
+ if (jevent->enabled && do_disable) {
+ ret = event_jul_disable(usess, jevent->name);
+ if (ret != LTTNG_OK) {
+ rcu_read_unlock();
+ goto error;
+ }
+ }
+ jevent->enabled = 0;
+ }
+ rcu_read_unlock();
+
+ ret = LTTNG_OK;
+
+error: