+#include <lttng/event-internal.h>
+#include <lttng/event.h>
+#include <lttng/lttng-error.h>
+#include <lttng/userspace-probe-internal.h>
+
+struct lttng_event *lttng_event_create(void)
+{
+ struct lttng_event *event;
+ struct lttng_event_extended *event_extended;
+
+ event = zmalloc(sizeof(*event));
+ if (!event) {
+ PERROR("Error allocating event structure");
+ goto end;
+ }
+
+ event_extended = zmalloc(sizeof(*event_extended));
+ if (!event_extended) {
+ PERROR("Error allocating event extended structure");
+ goto error;
+ }
+ event->extended.ptr = event_extended;
+end:
+ return event;
+error:
+ free(event);
+ goto end;
+}
+
+void lttng_event_destroy(struct lttng_event *event)
+{
+ struct lttng_event_extended *event_extended;
+
+ if (!event) {
+ return;
+ }
+
+ event_extended = (struct lttng_event_extended *) event->extended.ptr;
+
+ if (event_extended) {
+ if (event_extended->probe_location) {
+ lttng_userspace_probe_location_destroy(
+ event_extended->probe_location);
+ }
+ free(event_extended);
+ }
+ free(event);
+}