- for (i = 0; i < size; i++) {
- /*
- * Check if event exist and if so, continue since it was enable
- * previously.
- */
- uevent = trace_ust_find_event_by_name(uchan->events,
- events[i].name);
- if (uevent != NULL) {
- ret = ust_app_enable_event_pid(usess, uchan, uevent,
- events[i].pid);
- if (ret < 0) {
- if (ret != -LTTNG_UST_ERR_EXIST) {
- ret = LTTNG_ERR_UST_ENABLE_FAIL;
- goto error;
- }
- }
- continue;
- }
-
- /* Create ust event */
- uevent = trace_ust_create_event(&events[i]);
- if (uevent == NULL) {
- ret = LTTNG_ERR_FATAL;
- goto error_destroy;
- }
-
- /* Create event for the specific PID */
- ret = ust_app_enable_event_pid(usess, uchan, uevent,
- events[i].pid);
- if (ret < 0) {
- if (ret == -LTTNG_UST_ERR_EXIST) {
- ret = LTTNG_ERR_UST_EVENT_EXIST;
- goto error;
- } else {
- ret = LTTNG_ERR_UST_ENABLE_FAIL;
- goto error_destroy;
- }
- }
-
- uevent->enabled = 1;
- /* Add ltt ust event to channel */
- rcu_read_lock();
- lttng_ht_add_unique_str(uchan->events, &uevent->node);
- rcu_read_unlock();
- }
-
- free(events);
- break;