0.5.26
[lttv.git] / ltt / branches / poly / ltt / tracefile.c
index 5feb97f5e2a45fad890f1de8c267e62218942ff4..a1e19a7fae56871a6d0889a6101c35ce8f760780 100644 (file)
@@ -921,8 +921,10 @@ static int ltt_get_facility_description(LttFacility *f,
                                break;
                        case LTT_ARCH_TYPE_ARM:
                                text = "_arm";
+                               break;
                        case LTT_ARCH_TYPE_PPC64:
                                text = "_ppc64";
+                               break;
                        case LTT_ARCH_TYPE_X86_64:
                                text = "_x86_64";
                                break;
@@ -1580,6 +1582,10 @@ int ltt_tracefile_seek_position(LttTracefile *tf, const LttEventPosition *ep) {
 
   tf->event.offset = ep->offset;
 
+       /* Put back the event real tsc */
+       tf->event.tsc = ep->tsc;
+       tf->buffer.tsc = ep->tsc;
+
   err = ltt_tracefile_read_update_event(tf);
   if(err) goto fail;
   err = ltt_tracefile_read_op(tf);
@@ -1740,7 +1746,6 @@ int ltt_tracefile_read_update_event(LttTracefile *tf)
                tf->buffer.tsc = event->tsc;
                pos += sizeof(guint64);
        }
-       
        event->event_time = ltt_interpolate_time(tf, event);
   event->facility_id = *(guint8*)pos;
   pos += sizeof(guint8);
@@ -1927,7 +1932,7 @@ void ltt_update_event_size(LttTracefile *tf)
     }
   } else {
     if(!f->exists) {
-      g_error("Unknown facility %hhu (0x%hhx) in tracefile %s",
+      g_warning("Unknown facility %hhu (0x%hhx) in tracefile %s",
           tf->event.facility_id,
           tf->event.facility_id,
           g_quark_to_string(tf->name));
@@ -1938,7 +1943,7 @@ void ltt_update_event_size(LttTracefile *tf)
       ltt_facility_eventtype_get(f, tf->event.event_id);
 
     if(!event_type) {
-      g_error("Unknown event id %hhu in facility %s in tracefile %s",
+      g_warning("Unknown event id %hhu in facility %s in tracefile %s",
           tf->event.event_id,
           g_quark_to_string(f->name),
           g_quark_to_string(tf->name));
@@ -1956,6 +1961,10 @@ void ltt_update_event_size(LttTracefile *tf)
   tf->event.data_size = size;
   
   /* Check consistency between kernel and LTTV structure sizes */
+       if(tf->event.event_size == 0xFFFF) {
+               /* Event size too big to fit in the event size field */
+               tf->event.event_size = tf->event.data_size;
+       }
   g_assert(tf->event.data_size == tf->event.event_size);
 
   return;
@@ -1963,7 +1972,12 @@ void ltt_update_event_size(LttTracefile *tf)
 facility_error:
 event_type_error:
 event_id_error:
-  tf->event.data_size = 0;
+       if(tf->event.event_size == 0xFFFF) {
+               g_error("Cannot jump over an unknown event bigger than 0xFFFE bytes");
+       }
+       /* The facility is unknown : use the kernel information about this event
+        * to jump over it. */
+  tf->event.data_size = tf->event.event_size;
 }
 
 
@@ -2652,6 +2666,10 @@ gint check_fields_compatibility(LttEventType *event_type1,
     different = 1;
     goto end;
   }
+       if(type1->network != type2->network) {
+               different = 1;
+               goto end;
+       }
  
   switch(type1->type_class) {
     case LTT_INT_FIXED:
This page took 0.023681 seconds and 4 git commands to generate.