X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Ftrigger.c;h=04b3e7f116bc7ba667c96b8570c1621e2a09930e;hp=55ab99729c338259d72476e1a8074d12b9e5f43f;hb=b61776fb63d4bb14df77c0b5a15de28beed7ddfc;hpb=0de2479d5f5a287d31c69e34ea5202a69019f224 diff --git a/src/common/trigger.c b/src/common/trigger.c index 55ab99729..04b3e7f11 100644 --- a/src/common/trigger.c +++ b/src/common/trigger.c @@ -23,7 +23,7 @@ #include LTTNG_HIDDEN -bool lttng_trigger_validate(struct lttng_trigger *trigger) +bool lttng_trigger_validate(const struct lttng_trigger *trigger) { bool valid; @@ -971,3 +971,34 @@ enum lttng_error_code lttng_trigger_generate_bytecode( end: return ret; } + +LTTNG_HIDDEN +struct lttng_trigger *lttng_trigger_copy(const struct lttng_trigger *trigger) +{ + int ret; + struct lttng_payload copy_buffer; + struct lttng_trigger *copy = NULL; + + lttng_payload_init(©_buffer); + + ret = lttng_trigger_serialize(trigger, ©_buffer); + if (ret < 0) { + goto end; + } + + { + struct lttng_payload_view view = + lttng_payload_view_from_payload( + ©_buffer, 0, -1); + ret = lttng_trigger_create_from_payload( + &view, ©); + if (ret < 0) { + copy = NULL; + goto end; + } + } + +end: + lttng_payload_reset(©_buffer); + return copy; +}