update error message
[lttv.git] / ltt / branches / poly / ltt / marker.c
index f344be05340ded706200692dd26cac1d0cf1806e..aacfa00c873549190529bfcceba7cdeb587ae74a 100644 (file)
@@ -80,7 +80,7 @@ static inline const char *parse_trace_type(struct marker_info *info,
       *trace_type = LTT_TYPE_STRING;
       goto parse_end;
     case 'p':
-      *trace_type = LTT_TYPE_UNSIGNED_INT;
+      *trace_type = LTT_TYPE_POINTER;
       *trace_size = info->pointer_size;
       goto parse_end;
     case 'd':
@@ -184,7 +184,7 @@ static inline const char *parse_c_type(struct marker_info *info,
       *c_type = LTT_TYPE_STRING;
       goto parse_end;
     case 'p':
-      *c_type = LTT_TYPE_UNSIGNED_INT;
+      *c_type = LTT_TYPE_POINTER;
       *c_size = info->pointer_size;
       goto parse_end;
     case 'd':
@@ -250,6 +250,7 @@ static inline long add_type(struct marker_info *info,
   switch (trace_type) {
   case LTT_TYPE_SIGNED_INT:
   case LTT_TYPE_UNSIGNED_INT:
+  case LTT_TYPE_POINTER:
     field->size = trace_size;
     field->alignment = trace_size;
     field->attributes = attributes;
@@ -299,6 +300,7 @@ long marker_update_fields_offsets(struct marker_info *info, const char *data)
     switch (field->type) {
     case LTT_TYPE_SIGNED_INT:
     case LTT_TYPE_UNSIGNED_INT:
+    case LTT_TYPE_POINTER:
       field->offset = offset + ltt_align(offset, field->alignment,
                                           info->alignment);
       offset = field->offset + field->size;
@@ -404,11 +406,11 @@ int marker_format_event(LttTrace *trace, GQuark name, const char *format)
 {
   struct marker_info *info;
   
-  info = g_hash_table_lookup(trace->markers_hash, (gconstpointer)name);
+  info = marker_get_info_from_name(trace, name);
   if (!info)
     g_error("Got marker format \"%s\", but marker name \"%s\" has no ID yet. "
             "Kernel issue.",
-            format, name);
+            format, g_quark_to_string(name));
   for (; info != NULL; info = info->next) {
     if (info->format)
       g_free(info->format);
@@ -429,7 +431,8 @@ int marker_id_event(LttTrace *trace, GQuark name, guint16 id,
   int found = 0;
 
   if (trace->markers->len <= id)
-    trace->markers = g_array_set_size(trace->markers, id+1);
+    trace->markers = g_array_set_size(trace->markers,
+      max(trace->markers->len * 2, id + 1));
   info = &g_array_index(trace->markers, struct marker_info, id);
   info->name = name;
   info->int_size = int_size;
@@ -437,17 +440,20 @@ int marker_id_event(LttTrace *trace, GQuark name, guint16 id,
   info->pointer_size = pointer_size;
   info->size_t_size = size_t_size;
   info->alignment = alignment;
+  info->fields = NULL;
   info->next = NULL;
-  head = g_hash_table_lookup(trace->markers_hash, (gconstpointer)name);
+  head = marker_get_info_from_name(trace, name);
   if (!head)
-    g_hash_table_insert(trace->markers_hash, (gpointer)name, info);
+    g_hash_table_insert(trace->markers_hash, (gpointer)name,
+      (gpointer)(gulong)id);
   else {
     struct marker_info *iter;
     for (iter = head; iter != NULL; iter = iter->next)
       if (iter->name == name)
         found = 1;
     if (!found) {
-      g_hash_table_replace(trace->markers_hash, (gpointer)name, info);
+      g_hash_table_replace(trace->markers_hash, (gpointer)name,
+        (gpointer)(gulong)id);
       info->next = head;
     }
   }
This page took 0.024276 seconds and 4 git commands to generate.