Copy the packet_header in the plugins
authorJulien Desfossez <jdesfossez@efficios.com>
Wed, 14 Jun 2017 21:38:24 +0000 (17:38 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 16 Jun 2017 20:49:04 +0000 (16:49 -0400)
The trimmer, debug-info and fs-sink plugins now copy the packet_header
from the trace received as parameter.

Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
plugins/ctf/fs-sink/write.c
plugins/libctfcopytrace/ctfcopytrace.c
plugins/libctfcopytrace/ctfcopytrace.h
plugins/lttng-utils/copy.c
plugins/utils/trimmer/copy.c

index 51bd7208a9cb768aa4db8cdd4b50f0f4f167c625..dd380f5b667cd062f9c28a53cede8e360398f553 100644 (file)
@@ -673,7 +673,14 @@ enum bt_component_status writer_new_packet(
                                __func__, __FILE__, __LINE__);
                goto error;
        }
-       BT_PUT(writer_stream);
+
+       ret = ctf_stream_copy_packet_header(writer_component->err,
+                       packet, writer_stream);
+       if (ret != 0) {
+               fprintf(writer_component->err, "[error] %s in %s:%d\n",
+                               __func__, __FILE__, __LINE__);
+               goto error;
+       }
 
        goto end;
 
index f5cd071a142527b558032f9878cc79aa98088a28..d3373c1e7c015fe4c068da7f87414e228e0a6491 100644 (file)
@@ -466,6 +466,79 @@ end:
        return writer_stream_class;
 }
 
+BT_HIDDEN
+int ctf_stream_copy_packet_header(FILE *err, struct bt_ctf_packet *packet,
+               struct bt_ctf_stream *writer_stream)
+{
+       struct bt_ctf_field *packet_header = NULL, *writer_packet_header = NULL;
+       int ret = 0;
+
+       packet_header = bt_ctf_packet_get_header(packet);
+       if (!packet_header) {
+               goto end;
+       }
+
+       writer_packet_header = bt_ctf_field_copy(packet_header);
+       if (!writer_packet_header) {
+               fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+                               __LINE__);
+               goto error;
+       }
+
+       ret = bt_ctf_stream_set_packet_header(writer_stream,
+                       writer_packet_header);
+       if (ret) {
+               fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+                               __LINE__);
+               goto error;
+       }
+
+       goto end;
+
+error:
+       ret = -1;
+end:
+       bt_put(writer_packet_header);
+       bt_put(packet_header);
+       return ret;
+}
+
+BT_HIDDEN
+int ctf_packet_copy_header(FILE *err, struct bt_ctf_packet *packet,
+               struct bt_ctf_packet *writer_packet)
+{
+       struct bt_ctf_field *packet_header = NULL, *writer_packet_header = NULL;
+       int ret = 0;
+
+       packet_header = bt_ctf_packet_get_header(packet);
+       if (!packet_header) {
+               goto end;
+       }
+
+       writer_packet_header = bt_ctf_field_copy(packet_header);
+       if (!writer_packet_header) {
+               fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+                               __LINE__);
+               goto error;
+       }
+
+       ret = bt_ctf_packet_set_header(writer_packet, writer_packet_header);
+       if (ret) {
+               fprintf(err, "[error] %s in %s:%d\n", __func__, __FILE__,
+                               __LINE__);
+               goto error;
+       }
+
+       goto end;
+
+error:
+       ret = -1;
+end:
+       bt_put(packet_header);
+       bt_put(writer_packet_header);
+       return ret;
+}
+
 BT_HIDDEN
 int ctf_stream_copy_packet_context(FILE *err, struct bt_ctf_packet *packet,
                struct bt_ctf_stream *writer_stream)
@@ -813,7 +886,7 @@ enum bt_component_status ctf_copy_trace(FILE *err, struct bt_ctf_trace *trace,
                }
        }
 
-       header_type = bt_ctf_trace_get_packet_header_type(writer_trace);
+       header_type = bt_ctf_trace_get_packet_header_type(trace);
        if (header_type) {
                int_ret = bt_ctf_trace_set_packet_header_type(writer_trace, header_type);
                BT_PUT(header_type);
index 785f8a4711b98459f7b0f248594c6bb81ea7933d..74460f13212c7aca97f49f4176dcb2411c5db014 100644 (file)
@@ -102,6 +102,27 @@ enum bt_component_status ctf_copy_packet_context_field(FILE *err,
                struct bt_ctf_field *writer_packet_context,
                struct bt_ctf_field_type *writer_packet_context_type);
 
+
+/*
+ * Copy the packet_header from the packet passed in parameter and assign it
+ * to the writer_stream.
+ *
+ * Returns 0 on success or -1 on error.
+ */
+BT_HIDDEN
+int ctf_stream_copy_packet_header(FILE *err, struct bt_ctf_packet *packet,
+               struct bt_ctf_stream *writer_stream);
+
+/*
+ * Copy the packet_header from the packet passed in parameter and assign it
+ * to the writer_packet.
+ *
+ * Returns 0 on success or -1 on error.
+ */
+BT_HIDDEN
+int ctf_packet_copy_header(FILE *err, struct bt_ctf_packet *packet,
+               struct bt_ctf_packet *writer_packet);
+
 /*
  * Copy all the field values of the packet context from the packet passed in
  * parameter and set it to the writer_stream.
index 629d81be4f0d6156bf9b93766b5be77de34905c9..07590c7b330127eae12a67318beb2f6f92b9fb8a 100644 (file)
@@ -867,15 +867,28 @@ struct bt_ctf_packet *insert_new_packet(struct debug_info_iterator *debug_it,
                struct debug_info_trace *di_trace)
 {
        struct bt_ctf_packet *writer_packet;
+       int ret;
 
        writer_packet = bt_ctf_packet_create(writer_stream);
        if (!writer_packet) {
                fprintf(debug_it->err, "[error] %s in %s:%d\n", __func__,
                                __FILE__, __LINE__);
-               goto end;
+               goto error;
+       }
+
+       ret = ctf_packet_copy_header(debug_it->err, packet, writer_packet);
+       if (ret) {
+               fprintf(debug_it->err, "[error] %s in %s:%d\n", __func__,
+                               __FILE__, __LINE__);
+               goto error;
        }
-       g_hash_table_insert(di_trace->packet_map, (gpointer) packet, writer_packet);
 
+       g_hash_table_insert(di_trace->packet_map, (gpointer) packet,
+                       writer_packet);
+       goto end;
+
+error:
+       BT_PUT(writer_packet);
 end:
        return writer_packet;
 }
index ca0970a06d029b3f1e6887569cc3f89a0629fbe7..7bba7ac71947faffee4439c3e90ffadded9b6596 100644 (file)
@@ -54,15 +54,28 @@ struct bt_ctf_packet *insert_new_packet(struct trimmer_iterator *trim_it,
                struct bt_ctf_stream *stream)
 {
        struct bt_ctf_packet *writer_packet = NULL;
+       int ret;
 
        writer_packet = bt_ctf_packet_create(stream);
        if (!writer_packet) {
                fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
                                __FILE__, __LINE__);
-               goto end;
+               goto error;
        }
-       g_hash_table_insert(trim_it->packet_map, (gpointer) packet, writer_packet);
 
+       ret = ctf_packet_copy_header(trim_it->err, packet, writer_packet);
+       if (ret) {
+               fprintf(trim_it->err, "[error] %s in %s:%d\n", __func__,
+                               __FILE__, __LINE__);
+               goto error;
+       }
+
+       g_hash_table_insert(trim_it->packet_map, (gpointer) packet,
+                       writer_packet);
+       goto end;
+
+error:
+       BT_PUT(writer_packet);
 end:
        return writer_packet;
 }
This page took 0.028203 seconds and 4 git commands to generate.