X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ftrigger.c;fp=src%2Fcommon%2Ftrigger.c;h=e708694b1c0969a7feb649691af0c9b411f05cac;hp=a599fa3982b98853951d2f8f296007aa67fe4970;hb=5682b2e6462875214549f5b5a1d9eb1d8df0950e;hpb=bb17eb585257d944c7857d9400a4db247c49dcc1 diff --git a/src/common/trigger.c b/src/common/trigger.c index a599fa398..e708694b1 100644 --- a/src/common/trigger.c +++ b/src/common/trigger.c @@ -370,9 +370,26 @@ bool lttng_trigger_is_equal( return false; } + if (a->is_hidden != b->is_hidden) { + return false; + } + return true; } +LTTNG_HIDDEN +bool lttng_trigger_is_hidden(const struct lttng_trigger *trigger) +{ + return trigger->is_hidden; +} + +LTTNG_HIDDEN +void lttng_trigger_set_hidden(struct lttng_trigger *trigger) +{ + assert(!trigger->is_hidden); + trigger->is_hidden = true; +} + LTTNG_HIDDEN enum lttng_trigger_status lttng_trigger_set_name(struct lttng_trigger *trigger, const char* name) @@ -550,6 +567,40 @@ int lttng_triggers_add( return ret; } +LTTNG_HIDDEN +int lttng_triggers_remove_hidden_triggers(struct lttng_triggers *triggers) +{ + int ret; + unsigned int trigger_count, i = 0; + enum lttng_trigger_status trigger_status; + + assert(triggers); + + trigger_status = lttng_triggers_get_count(triggers, &trigger_count); + assert(trigger_status == LTTNG_TRIGGER_STATUS_OK); + + while (i < trigger_count) { + const struct lttng_trigger *trigger = + lttng_triggers_get_at_index(triggers, i); + + if (lttng_trigger_is_hidden(trigger)) { + ret = lttng_dynamic_pointer_array_remove_pointer( + &triggers->array, i); + if (ret) { + goto end; + } + + trigger_count--; + } else { + i++; + } + } + + ret = 0; +end: + return ret; +} + const struct lttng_trigger *lttng_triggers_get_at_index( const struct lttng_triggers *triggers, unsigned int index) { @@ -942,6 +993,7 @@ struct lttng_trigger *lttng_trigger_copy(const struct lttng_trigger *trigger) copy->tracer_token = trigger->tracer_token; copy->registered = trigger->registered; + copy->is_hidden = trigger->is_hidden; goto end; error_cleanup_trigger: