trace version 2.2
authorcompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 27 Oct 2008 20:55:48 +0000 (20:55 +0000)
committercompudj <compudj@04897980-b3bd-0310-b5e0-8ef037075253>
Mon, 27 Oct 2008 20:55:48 +0000 (20:55 +0000)
git-svn-id: http://ltt.polymtl.ca/svn@3133 04897980-b3bd-0310-b5e0-8ef037075253

trunk/lttv/ltt/ltt-private.h
trunk/lttv/ltt/tracefile.c

index 24e82f291e25949da8a6ae7b3dd76fb1e6157b3b..4b2b4a3275638b4e6bcec14a7e5598cb612a6826 100644 (file)
@@ -66,7 +66,7 @@ typedef guint32 uint32_t;
 typedef guint64 uint64_t;
 
 /* Subbuffer header */
-struct ltt_subbuffer_header_2_1 {
+struct ltt_subbuffer_header_2_2 {
        uint64_t cycle_count_begin;     /* Cycle count at subbuffer start */
        uint64_t cycle_count_end;       /* Cycle count at subbuffer end */
        uint32_t magic_number;          /*
@@ -86,10 +86,18 @@ struct ltt_subbuffer_header_2_1 {
        uint32_t freq_scale;            /* Frequency scaling */
        uint32_t lost_size;             /* Size unused at end of subbuffer */
        uint32_t buf_size;              /* Size of this subbuffer */
+       uint32_t events_lost;           /*
+                                        * Events lost in this subbuffer since
+                                        * last subbuffer switch.
+                                        */
+       uint32_t subbuf_corrupt;        /*
+                                        * Corrupted (lost) subbuffers since
+                                        * the begginig of the trace.
+                                        */
        char header_end[0];             /* End of header */
 };
 
-typedef struct ltt_subbuffer_header_2_1 ltt_subbuffer_header_t;
+typedef struct ltt_subbuffer_header_2_2 ltt_subbuffer_header_t;
 
 /*
  * Return header size without padding after the structure. Don't use packed
@@ -147,7 +155,9 @@ struct LttTracefile {
   uint8_t   tscbits;
   uint8_t   eventbits;
   uint64_t  tsc_mask;
-  uint64_t  tsc_mask_next_bit;       //next MSB after the mask
+  uint64_t  tsc_mask_next_bit;       //next MSB after the mask<
+  uint32_t  events_lost;
+  uint32_t  subbuf_corrupt;
 
   /* Current event */
   LttEvent event;                    //Event currently accessible in the trace
index 1d411e3e3f2ad94cc31e60e1bdbc53c35956534d..7aaf232c08a701ee73d4d0f66d5eab6837ac74d7 100644 (file)
@@ -152,9 +152,9 @@ static int parse_trace_header(ltt_subbuffer_header_t *header,
     break;
   case 2:
     switch(header->minor_version) {
-    case 1:
+    case 2:
       {
-        struct ltt_subbuffer_header_2_1 *vheader = header;
+        struct ltt_subbuffer_header_2_2 *vheader = header;
         tf->buffer_header_size = ltt_subbuffer_header_size();
         tf->tscbits = 27;
         tf->eventbits = 5;
@@ -265,6 +265,8 @@ static gint ltt_tracefile_open(LttTrace *t, gchar * fileName, LttTracefile *tf)
   tf->file_size = lTDFStat.st_size;
   tf->buf_size = ltt_get_uint32(LTT_GET_BO(tf), &header->buf_size);
   tf->num_blocks = tf->file_size / tf->buf_size;
+  tf->events_lost = 0;
+  tf->subbuf_corrupt = 0;
 
   if(munmap(tf->buffer.head,
         PAGE_ALIGN(ltt_subbuffer_header_size()))) {
@@ -1385,6 +1387,19 @@ static gint map_block(LttTracefile * tf, guint block_num)
   tf->event.block = block_num;
   tf->event.offset = 0;
   
+  if (tf->events_lost != header->events_lost) {
+    g_warning("%d events lost in tracefile %s",
+      tf->events_lost - header->events_lost,
+      g_quark_to_string(tf->long_name));
+    tf->events_lost = header->events_lost;
+  }
+  if (tf->subbuf_corrupt != header->subbuf_corrupt) {
+    g_warning("%d subbuffer(s) corrupted in tracefile %s",
+      tf->subbuf_corrupt - header->subbuf_corrupt,
+      g_quark_to_string(tf->long_name));
+    tf->subbuf_corrupt = header->subbuf_corrupt;
+  }
+
   return 0;
 
 map_error:
This page took 0.026309 seconds and 4 git commands to generate.