Add lttng_event copy constructor
[lttng-tools.git] / src / lib / lttng-ctl / event.c
index 9413b7052ee80817360853669e9ec05e36546e13..046028cd219a46b25866770c1d8c96b8405092a2 100644 (file)
@@ -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;
This page took 0.02391 seconds and 4 git commands to generate.