Add trace name handling throughout tracectl, ustcomm and ustcmd
[ust.git] / libustcomm / ustcomm.c
index fe8fea2d66c2c46b8fd30252c3357fba443cb95e..bbdbd7ee643a7b4c887aced587f9e001a34ac8b5 100644 (file)
@@ -621,13 +621,55 @@ char * ustcomm_restore_ptr(char *ptr, char *data_field, int data_field_size)
        return data_field + (long)ptr;
 }
 
+int ustcomm_pack_trace_info(struct ustcomm_header *header,
+                           struct ustcomm_trace_info *trace_inf,
+                           const char *trace)
+{
+       int offset = 0;
+
+       trace_inf->trace = ustcomm_print_data(trace_inf->data,
+                                             sizeof(trace_inf->data),
+                                             &offset,
+                                             trace);
+
+       if (trace_inf->trace == USTCOMM_POISON_PTR) {
+               return -ENOMEM;
+       }
+
+       header->size = COMPUTE_MSG_SIZE(trace_inf, offset);
+
+       return 0;
+}
+
+
+int ustcomm_unpack_trace_info(struct ustcomm_trace_info *trace_inf)
+{
+       trace_inf->trace = ustcomm_restore_ptr(trace_inf->trace,
+                                              trace_inf->data,
+                                              sizeof(trace_inf->data));
+       if (!trace_inf->trace) {
+               return -EINVAL;
+       }
+
+       return 0;
+}
 
 int ustcomm_pack_channel_info(struct ustcomm_header *header,
                              struct ustcomm_channel_info *ch_inf,
+                             const char *trace,
                              const char *channel)
 {
        int offset = 0;
 
+       ch_inf->trace = ustcomm_print_data(ch_inf->data,
+                                          sizeof(ch_inf->data),
+                                          &offset,
+                                          trace);
+
+       if (ch_inf->trace == USTCOMM_POISON_PTR) {
+               return -ENOMEM;
+       }
+
        ch_inf->channel = ustcomm_print_data(ch_inf->data,
                                             sizeof(ch_inf->data),
                                             &offset,
@@ -645,6 +687,13 @@ int ustcomm_pack_channel_info(struct ustcomm_header *header,
 
 int ustcomm_unpack_channel_info(struct ustcomm_channel_info *ch_inf)
 {
+       ch_inf->trace = ustcomm_restore_ptr(ch_inf->trace,
+                                           ch_inf->data,
+                                           sizeof(ch_inf->data));
+       if (!ch_inf->trace) {
+               return -EINVAL;
+       }
+
        ch_inf->channel = ustcomm_restore_ptr(ch_inf->channel,
                                              ch_inf->data,
                                              sizeof(ch_inf->data));
@@ -657,11 +706,21 @@ int ustcomm_unpack_channel_info(struct ustcomm_channel_info *ch_inf)
 
 int ustcomm_pack_buffer_info(struct ustcomm_header *header,
                             struct ustcomm_buffer_info *buf_inf,
+                            const char *trace,
                             const char *channel,
                             int channel_cpu)
 {
        int offset = 0;
 
+       buf_inf->trace = ustcomm_print_data(buf_inf->data,
+                                           sizeof(buf_inf->data),
+                                           &offset,
+                                           trace);
+
+       if (buf_inf->trace == USTCOMM_POISON_PTR) {
+               return -ENOMEM;
+       }
+
        buf_inf->channel = ustcomm_print_data(buf_inf->data,
                                              sizeof(buf_inf->data),
                                              &offset,
@@ -681,6 +740,13 @@ int ustcomm_pack_buffer_info(struct ustcomm_header *header,
 
 int ustcomm_unpack_buffer_info(struct ustcomm_buffer_info *buf_inf)
 {
+       buf_inf->trace = ustcomm_restore_ptr(buf_inf->trace,
+                                            buf_inf->data,
+                                            sizeof(buf_inf->data));
+       if (!buf_inf->trace) {
+               return -EINVAL;
+       }
+
        buf_inf->channel = ustcomm_restore_ptr(buf_inf->channel,
                                               buf_inf->data,
                                               sizeof(buf_inf->data));
@@ -693,11 +759,22 @@ int ustcomm_unpack_buffer_info(struct ustcomm_buffer_info *buf_inf)
 
 int ustcomm_pack_marker_info(struct ustcomm_header *header,
                             struct ustcomm_marker_info *marker_inf,
+                            const char *trace,
                             const char *channel,
                             const char *marker)
 {
        int offset = 0;
 
+       marker_inf->trace = ustcomm_print_data(marker_inf->data,
+                                              sizeof(marker_inf->data),
+                                              &offset,
+                                              trace);
+
+       if (marker_inf->trace == USTCOMM_POISON_PTR) {
+               return -ENOMEM;
+       }
+
+
        marker_inf->channel = ustcomm_print_data(marker_inf->data,
                                                 sizeof(marker_inf->data),
                                                 &offset,
@@ -724,6 +801,13 @@ int ustcomm_pack_marker_info(struct ustcomm_header *header,
 
 int ustcomm_unpack_marker_info(struct ustcomm_marker_info *marker_inf)
 {
+       marker_inf->trace = ustcomm_restore_ptr(marker_inf->trace,
+                                               marker_inf->data,
+                                               sizeof(marker_inf->data));
+       if (!marker_inf->trace) {
+               return -EINVAL;
+       }
+
        marker_inf->channel = ustcomm_restore_ptr(marker_inf->channel,
                                                  marker_inf->data,
                                                  sizeof(marker_inf->data));
This page took 0.024924 seconds and 4 git commands to generate.