git-svn-id: http://ltt.polymtl.ca/svn@123 04897980-b3bd-0310-b5e0-8ef037075253
[lttv.git] / ltt / branches / yangxx / convert / convert.c
index 0aaa8f93f663dbf325f4cd2887e343c7d5832f28..52c9bb1b5a045bf3963a0701e6d0315fec73153b 100644 (file)
@@ -97,8 +97,8 @@ int main(int argc, char ** argv){
   trace_buffer_start *tBufStart;
   trace_buffer_end *tBufEnd;
   trace_file_system * tFileSys;
-  uint16_t newId;
-  uint8_t  evId, startId;
+  uint16_t newId, startId;
+  uint8_t  evId;
   uint32_t time_delta, startTimeDelta;
   void * cur_pos, *end_pos;
   buffer_start start;
@@ -212,7 +212,6 @@ int main(int argc, char ** argv){
 
   evId = *(uint8_t *)cur_pos;
   cur_pos += sizeof(uint8_t);
-  time_delta = *(uint32_t*)cur_pos;
   cur_pos += sizeof(uint32_t); 
   tStart = (trace_start*)cur_pos;
 
@@ -262,6 +261,7 @@ int main(int argc, char ** argv){
     int event_count = 0;
     beat_count = 0;
 
+    for(j=1;j<cpu;j++)has_event[j] = FALSE;
     for(j=0;j<cpu;j++) write_pos[j] = buf_out[j];
     write_pos_intr = buf_intr;
     write_pos_fac = buf_fac;
@@ -269,11 +269,33 @@ int main(int argc, char ** argv){
 
     readFile(fd,(void*)buffer, block_size, "Unable to read block header");
 
+    cur_pos= buffer;
+    evId = *(uint8_t *)cur_pos;
+    cur_pos += sizeof(uint8_t);
+    newId = evId;
+    time_delta = *(uint32_t*)cur_pos;
+    cur_pos += sizeof(uint32_t); 
+    tBufStart = (trace_buffer_start*)cur_pos;
+    cur_pos += sizeof(trace_buffer_start);
+    cur_pos += sizeof(uint16_t); //Skip event size
+
+    startId = newId;
+    startTimeDelta = time_delta;
+    start.seconds = tBufStart->Time.tv_sec;
+    start.nanoseconds = tBufStart->Time.tv_usec;
+    start.cycle_count = tBufStart->TSC;
+    start.block_id = tBufStart->ID;
+    end.block_id = start.block_id;
+
     end_pos = buffer + block_size; //end of the buffer
     size_lost = *(uint32_t*)(end_pos - sizeof(uint32_t));
 
     end_pos = buffer + block_size - size_lost ; //buffer_end event
-    tBufEnd = (trace_buffer_end*)(end_pos+sizeof(uint8_t)+sizeof(uint32_t));
+    if(ltt_log_cpu){
+      tBufEnd = (trace_buffer_end*)(end_pos + 2 * sizeof(uint8_t)+sizeof(uint32_t));
+    }else{
+      tBufEnd = (trace_buffer_end*)(end_pos+sizeof(uint8_t)+sizeof(uint32_t));
+    }
     end.seconds = tBufEnd->Time.tv_sec;
     end.nanoseconds = tBufEnd->Time.tv_usec;
     end.cycle_count = tBufEnd->TSC;
@@ -483,7 +505,7 @@ int main(int argc, char ** argv){
        }else nbBytes = 0;
 
        if(ltt_log_cpu){
-         size_count[cpu_id] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t);
+         size_count[cpu_id] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t)+ event_size;
          if(size_count[cpu_id] > block_size - reserve_size){
            printf("size count exceeds the limit of the buffer\n");
            exit(1);
@@ -496,7 +518,7 @@ int main(int argc, char ** argv){
            write_to_buffer(write_pos[cpu_id], (void*)&c, 1);
          }
        }else{
-         size_count[0] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t);
+         size_count[0] += nbBytes + sizeof(uint16_t) + sizeof(uint32_t)+event_size;
          if(size_count[0] > block_size - reserve_size){
            printf("size count exceeds the limit of the buffer\n");
            exit(1);
This page took 0.023637 seconds and 4 git commands to generate.