warning fixes
[lttv.git] / ltt / branches / poly / ltt / tracefile.c
index 6b027c4fc02182249a4af874bcc8f9494df1f4f8..fc1f4583d009a732982d96d94a8cd57bb418eb6d 100644 (file)
@@ -76,11 +76,6 @@ GQuark LTT_TRACEFILE_NAME_FACILITIES;
 #define PAGE_MASK (~(page_size-1))
 #define PAGE_ALIGN(addr)  (((addr)+page_size-1)&PAGE_MASK)
 
-/* obtain the time of an event */
-
-static inline LttTime getEventTime(LttTracefile * tf);
-
-
 /* set the offset of the fields belonging to the event,
    need the information of the archecture */
 void set_fields_offsets(LttTracefile *tf, LttEventType *event_type);
@@ -251,10 +246,16 @@ gint ltt_tracefile_open(LttTrace *t, gchar * fileName, LttTracefile *tf)
     
   //store the size of the file
   tf->file_size = lTDFStat.st_size;
-  tf->block_size = ltt_get_uint32(LTT_GET_BO(tf), &header->buf_size);
-  tf->num_blocks = tf->file_size / tf->block_size;
-
-  munmap(tf->buffer.head, PAGE_ALIGN(sizeof(struct ltt_block_start_header)));
+  tf->buf_size = ltt_get_uint32(LTT_GET_BO(tf), &header->buf_size);
+  tf->num_blocks = tf->file_size / tf->buf_size;
+
+  if(munmap(tf->buffer.head,
+        PAGE_ALIGN(sizeof(struct ltt_block_start_header)))) {
+    g_warning("unmap size : %u\n",
+        PAGE_ALIGN(sizeof(struct ltt_block_start_header)));
+    perror("munmap error");
+    g_assert(0);
+  }
   tf->buffer.head = NULL;
 
   //read the first block
@@ -267,7 +268,13 @@ gint ltt_tracefile_open(LttTrace *t, gchar * fileName, LttTracefile *tf)
 
   /* Error */
 unmap_file:
-  munmap(tf->buffer.head, PAGE_ALIGN(sizeof(struct ltt_block_start_header)));
+  if(munmap(tf->buffer.head,
+        PAGE_ALIGN(sizeof(struct ltt_block_start_header)))) {
+    g_warning("unmap size : %u\n",
+        PAGE_ALIGN(sizeof(struct ltt_block_start_header)));
+    perror("munmap error");
+    g_assert(0);
+  }
 close_file:
   close(tf->fd);
 end:
@@ -356,8 +363,16 @@ gint ltt_tracefile_open_control(LttTrace *t, gchar * control_name)
 
 void ltt_tracefile_close(LttTracefile *t)
 {
+  int page_size = getpagesize();
+
   if(t->buffer.head != NULL)
-    munmap(t->buffer.head, t->buf_size);
+    if(munmap(t->buffer.head, PAGE_ALIGN(t->buf_size))) {
+    g_warning("unmap size : %u\n",
+        PAGE_ALIGN(t->buf_size));
+    perror("munmap error");
+    g_assert(0);
+  }
+
   close(t->fd);
 }
 
@@ -520,7 +535,6 @@ int get_tracefile_name_number(const gchar *raw_name,
 {
   guint raw_name_len = strlen(raw_name);
   gchar char_name[PATH_MAX];
-  gchar *digit_begin;
   int i;
   int underscore_pos;
   long int cpu_num;
@@ -669,8 +683,6 @@ static int open_tracefiles(LttTrace *trace, gchar *root_path,
                        GQuark name;
       guint num;
       GArray *group;
-      LttTracefile *tf;
-      guint len;
       
       if(get_tracefile_name_number(rel_path, &name, &num))
         continue; /* invalid name */
@@ -939,7 +951,6 @@ static int ltt_process_facility_tracefile(LttTracefile *tf)
   return 0;
 
   /* Error handling */
-facility_error:
 event_id_error:
 fac_id_error:
 update_error:
@@ -966,8 +977,10 @@ LttTrace *ltt_trace_open(const gchar *pathname)
 
   /* Open all the tracefiles */
   g_datalist_init(&t->tracefiles);
-  if(open_tracefiles(t, abs_path, ""))
+  if(open_tracefiles(t, abs_path, "")) {
+    g_warning("Error opening tracefile %s", abs_path);
     goto open_error;
+  }
   
   /* Prepare the facilities containers : array and mapping */
   /* Array is zeroed : the "exists" field is set to false by default */
@@ -1021,7 +1034,7 @@ alloc_error:
 
 }
 
-GQuark ltt_trace_name(LttTrace *t)
+GQuark ltt_trace_name(const LttTrace *t)
 {
   return t->pathname;
 }
@@ -1135,7 +1148,6 @@ LttTracefile *ltt_trace_find_tracefile(LttTrace *t, const gchar *name)
 static void ltt_tracefile_time_span_get(LttTracefile *tf,
                                         LttTime *start, LttTime *end)
 {
-  struct ltt_block_start_header * header;
   int err;
 
   err = map_block(tf, 0);
@@ -1307,7 +1319,7 @@ int ltt_tracefile_seek_time(LttTracefile *tf, LttTime time)
         else if(ret) goto fail;
 
         if(ltt_time_compare(time, tf->event.event_time) >= 0)
-          break;
+          goto found;
       }
 
     } else if(ltt_time_compare(time, tf->buffer.begin.timestamp) < 0) {
@@ -1364,11 +1376,12 @@ int ltt_tracefile_seek_position(LttTracefile *tf, const LttEventPosition *ep) {
   err = ltt_tracefile_read_op(tf);
   if(err) goto fail;
 
-  return;
+  return 0;
 
 fail:
   g_error("ltt_tracefile_seek_time failed on tracefile %s", 
       g_quark_to_string(tf->name));
+  return 1;
 }
 
 /* Calculate the real event time based on the buffer boundaries */
@@ -1403,7 +1416,8 @@ LttEvent *ltt_tracefile_get_event(LttTracefile *tf)
  *Return value
  *
  *    Returns 0 if an event can be used in tf->event.
- *    Returns ERANGE on end of trace. The event in tf->event still can be used.
+ *    Returns ERANGE on end of trace. The event in tf->event still can be used
+ *    (if the last block was not empty).
  *    Returns EPERM on error.
  *
  *    This function does make the tracefile event structure point to the event
@@ -1463,9 +1477,6 @@ int ltt_tracefile_read_seek(LttTracefile *tf)
 /* do specific operation on events */
 int ltt_tracefile_read_op(LttTracefile *tf)
 {
-  int err;
-  LttFacility *f;
-  void * pos;
   LttEvent *event;
 
   event = &tf->event;
@@ -1485,8 +1496,6 @@ int ltt_tracefile_read_op(LttTracefile *tf)
  * event specific operation. */
 int ltt_tracefile_read_update_event(LttTracefile *tf)
 {
-  int err;
-  LttFacility *f;
   void * pos;
   LttEvent *event;
  
@@ -1572,14 +1581,21 @@ static gint map_block(LttTracefile * tf, guint block_num)
 
   g_assert(block_num < tf->num_blocks);
 
-  if(tf->buffer.head != NULL)
-    munmap(tf->buffer.head, PAGE_ALIGN(tf->buf_size));
+  if(tf->buffer.head != NULL) {
+    if(munmap(tf->buffer.head, PAGE_ALIGN(tf->buf_size))) {
+    g_warning("unmap size : %u\n",
+        PAGE_ALIGN(tf->buf_size));
+      perror("munmap error");
+      g_assert(0);
+    }
+  }
+    
   
   /* Multiple of pages aligned head */
   tf->buffer.head = mmap(0,
-      PAGE_ALIGN(tf->block_size),
+      PAGE_ALIGN(tf->buf_size),
       PROT_READ, MAP_PRIVATE, tf->fd,
-      PAGE_ALIGN((off_t)tf->block_size * (off_t)block_num));
+      PAGE_ALIGN((off_t)tf->buf_size * (off_t)block_num));
 
   if(tf->buffer.head == MAP_FAILED) {
     perror("Error in allocating memory for buffer of tracefile");
@@ -1596,14 +1612,14 @@ static gint map_block(LttTracefile * tf, guint block_num)
   tf->buffer.begin.timestamp = ltt_get_time(LTT_GET_BO(tf),
                                               &header->begin.timestamp);
   tf->buffer.begin.timestamp.tv_nsec *= NSEC_PER_USEC;
-  g_warning("block %u begin : %lu.%lu", block_num,
+  g_debug("block %u begin : %lu.%lu", block_num,
       tf->buffer.begin.timestamp.tv_sec, tf->buffer.begin.timestamp.tv_nsec);
   tf->buffer.begin.cycle_count = ltt_get_uint64(LTT_GET_BO(tf),
                                               &header->begin.cycle_count);
   tf->buffer.end.timestamp = ltt_get_time(LTT_GET_BO(tf),
                                               &header->end.timestamp);
   tf->buffer.end.timestamp.tv_nsec *= NSEC_PER_USEC;
-  g_warning("block %u end : %lu.%lu", block_num,
+  g_debug("block %u end : %lu.%lu", block_num,
       tf->buffer.end.timestamp.tv_sec, tf->buffer.end.timestamp.tv_nsec);
   tf->buffer.end.cycle_count = ltt_get_uint64(LTT_GET_BO(tf),
                                               &header->end.cycle_count);
@@ -1616,7 +1632,7 @@ static gint map_block(LttTracefile * tf, guint block_num)
   /* FIXME
    * eventually support variable buffer size : will need a partial pre-read of
    * the headers to create an index when we open the trace... eventually. */
-  g_assert(tf->block_size  == ltt_get_uint32(LTT_GET_BO(tf), 
+  g_assert(tf->buf_size  == ltt_get_uint32(LTT_GET_BO(tf), 
                                              &header->buf_size));
   
   /* Now that the buffer is mapped, calculate the time interpolation for the
@@ -1695,14 +1711,15 @@ void ltt_update_event_size(LttTracefile *tf)
           g_quark_to_string(tf->name));
       goto event_type_error;
     }
-    
     if(event_type->root_field)
       size = get_field_type_size(tf, event_type,
           0, 0, event_type->root_field, tf->event.data);
     else
       size = 0;
 
-    g_debug("Event root field : f.e %hhu.%hhu size %lu", tf->event.facility_id,
+    g_debug("Event root field : f.e %hhu.%hhu size %zd",
+        tf->event.facility_id,
         tf->event.event_id, size);
   }
   
@@ -1710,7 +1727,7 @@ void ltt_update_event_size(LttTracefile *tf)
   
   /* Check consistency between kernel and LTTV structure sizes */
   g_assert(tf->event.data_size == tf->event.event_size);
-  
+
   return;
 
 facility_error:
@@ -1735,13 +1752,12 @@ static int ltt_seek_next_event(LttTracefile *tf)
 {
   int ret = 0;
   void *pos;
-  ssize_t event_size;
   
   /* seek over the buffer header if we are at the buffer start */
   if(tf->event.offset == 0) {
     tf->event.offset += sizeof(struct ltt_block_start_header);
 
-    if(tf->event.offset == tf->block_size - tf->buffer.lost_size) {
+    if(tf->event.offset == tf->buf_size - tf->buffer.lost_size) {
       ret = ERANGE;
     }
     goto found;
@@ -1756,7 +1772,7 @@ static int ltt_seek_next_event(LttTracefile *tf)
   
   tf->event.offset = pos - tf->buffer.head;
   
-  if(tf->event.offset == tf->block_size - tf->buffer.lost_size) {
+  if(tf->event.offset == tf->buf_size - tf->buffer.lost_size) {
     ret = ERANGE;
     goto found;
   }
@@ -1785,14 +1801,12 @@ static double calc_nsecs_per_cycle(LttTracefile * tf)
   LttCycleCount     lBufTotalCycle;/* Total cycles for this buffer */
 
   /* Calculate the total time for this buffer */
-  lBufTotalTime = ltt_time_sub(
-       ltt_get_time(LTT_GET_BO(tf), &tf->buffer.end.timestamp),
-       ltt_get_time(LTT_GET_BO(tf), &tf->buffer.begin.timestamp));
+  lBufTotalTime = ltt_time_sub(tf->buffer.end.timestamp,
+                               tf->buffer.begin.timestamp);
 
   /* Calculate the total cycles for this bufffer */
-  lBufTotalCycle  = ltt_get_uint64(LTT_GET_BO(tf), &tf->buffer.end.cycle_count);
-  lBufTotalCycle -= ltt_get_uint64(LTT_GET_BO(tf),
-                     &tf->buffer.begin.cycle_count);
+  lBufTotalCycle  = tf->buffer.end.cycle_count;
+  lBufTotalCycle -= tf->buffer.begin.cycle_count;
 
   /* Convert the total time to double */
   lBufTotalNSec  = ltt_time_to_double(lBufTotalTime);
@@ -2009,7 +2023,6 @@ gint check_fields_compatibility(LttEventType *event_type1,
     LttField *field1, LttField *field2)
 {
   guint different = 0;
-  enum field_status local_fixed_root, local_fixed_parent;
   guint i;
   LttType *type1;
   LttType *type2;
@@ -2035,11 +2048,6 @@ gint check_fields_compatibility(LttEventType *event_type1,
   type1 = field1->field_type;
   type2 = field2->field_type;
 
-  size_t current_root_offset;
-  size_t current_offset;
-  enum field_status current_child_status, final_child_status;
-  size_t max_size;
-
   if(type1->type_class != type2->type_class) {
     different = 1;
     goto end;
This page took 0.027528 seconds and 4 git commands to generate.