fix sparse enums
[lttv.git] / ltt / branches / poly / ltt / facility.c
index c313eef1d2b061bfdba091adb816db2f555483f0..380689b4628e773ea4195c8d2fe122e811702cb8 100644 (file)
@@ -138,10 +138,13 @@ int ltt_facility_open(LttFacility *f, LttTrace * t, gchar * pathname)
       checkNamedTypesImplemented(&fac->named_types);
     
       generateChecksum(fac->name, &checksum, &fac->events);
-      if(checksum == f->checksum) {
+      // FIXME if(checksum == f->checksum) {
         generateFacility(f, fac, checksum);
         generated = TRUE;
-      }
+      //}
+      if (checksum != f->checksum)
+       g_warning("Facility checksum mismatch for facility %s : kernel 0x%X vs "
+               "XML 0x%X\n", fac->name, f->checksum, checksum);
 
       g_free(fac->name);
       free(fac->capname);
@@ -194,7 +197,7 @@ void generateFacility(LttFacility *f, facility_t *fac, guint32 checksum)
   table_t *named_types = &fac->named_types;
   
   g_assert(f->name == g_quark_from_string(facilityName));
-  g_assert(f->checksum == checksum);
+  //g_assert(f->checksum == checksum);
 
   //f->event_number = events->position;
   
@@ -249,6 +252,8 @@ void generateFacility(LttFacility *f, facility_t *fac, guint32 checksum)
     event_type->index = i;
     event_type->facility = f;
 
+    event_type->has_compact_data = parser_event->compact_data;
+
     event_type->fields = g_array_sized_new(FALSE, TRUE,
         sizeof(LttField), parser_event->fields.position);
     event_type->fields = 
@@ -390,10 +395,14 @@ void construct_fields(LttFacility *fac,
       {
         guint i;
         type->enum_map = g_hash_table_new(g_direct_hash, g_direct_equal);
+       type->lowest_value = G_MAXINT32;
+       type->highest_value = G_MININT32;
         for(i=0; i<td->labels.position; i++) {
           GQuark value = g_quark_from_string((char*)td->labels.array[i]);
           gint key = *(int*)td->labels_values.array[i];
           g_hash_table_insert(type->enum_map, (gpointer)key, (gpointer)value);
+         type->highest_value = max(key, type->highest_value);
+         type->lowest_value = min(key, type->lowest_value);
         }
       }
       g_assert(type->size != 0);
This page took 0.033992 seconds and 4 git commands to generate.