X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Fevent.c;h=44e4864c02cdb0552663b4a57537df2b3dde75fb;hb=87597c2c3bbaa1502ad2025cbf16704829f3b464;hp=9413b7052ee80817360853669e9ec05e36546e13;hpb=de453daa7054455a39fac38fb74306fc12349f54;p=lttng-tools.git diff --git a/src/lib/lttng-ctl/event.c b/src/lib/lttng-ctl/event.c index 9413b7052..44e4864c0 100644 --- a/src/lib/lttng-ctl/event.c +++ b/src/lib/lttng-ctl/event.c @@ -54,6 +54,38 @@ error: goto end; } +struct lttng_event *lttng_event_copy(const struct lttng_event *event) +{ + struct lttng_event *new_event; + struct lttng_event_extended *new_event_extended; + + new_event = zmalloc(sizeof(*event)); + if (!event) { + PERROR("Error allocating event structure"); + goto end; + } + + /* Copy the content of the old event. */ + memcpy(new_event, event, sizeof(*event)); + + /* + * We need to create a new extended since the previous pointer is now + * invalid. + */ + new_event_extended = zmalloc(sizeof(*new_event_extended)); + if (!new_event_extended) { + PERROR("Error allocating event extended structure"); + goto error; + } + + new_event->extended.ptr = new_event_extended; +end: + return new_event; +error: + free(event); + goto end; +} + void lttng_event_destroy(struct lttng_event *event) { struct lttng_event_extended *event_extended; @@ -165,8 +197,8 @@ end: return ret; } -struct lttng_userspace_probe_location * -lttng_event_get_userspace_probe_location(struct lttng_event *event) +const struct lttng_userspace_probe_location * +lttng_event_get_userspace_probe_location(const struct lttng_event *event) { struct lttng_userspace_probe_location *probe_location = NULL; struct lttng_event_extended *event_extended;