compile fixes
[lttv.git] / ltt / branches / poly / lttv / lttv / tracecontext.c
index f98f812c3db1043b61f33ad1b5e12a1a19769e45..085059b4a91d72c0a0bac8cda408c8f587dd64d3 100644 (file)
@@ -955,11 +955,18 @@ gboolean lttv_process_traceset_seek_position(LttvTracesetContext *self,
 static LttField *
 find_field(LttEventType *et, const GQuark field)
 {
-  GQuark name;
+  LttField *f;
 
   if(field == 0) return NULL;
   
-  return ltt_eventtype_field_by_name(et, field);
+  f = ltt_eventtype_field_by_name(et, field);
+  if (!f) {
+    g_warning("Cannot find field %s in event %s.%s", g_quark_to_string(field),
+       g_quark_to_string(ltt_facility_name(ltt_eventtype_facility(et))),
+       g_quark_to_string(ltt_eventtype_name(et)));
+  }
+
+  return f;
 }
 
 LttvTraceHookByFacility *lttv_trace_hook_get_fac(LttvTraceHook *th, 
@@ -968,11 +975,7 @@ LttvTraceHookByFacility *lttv_trace_hook_get_fac(LttvTraceHook *th,
   return &g_array_index(th->fac_index, LttvTraceHookByFacility, facility_id);
 }
 
-/* Get the first facility corresponding to the name. As the types must be
- * compatible, it is relevant to use the field name and sizes of the first
- * facility to create data structures and assume the data will be compatible
- * thorough the trace */
-LttvTraceHookByFacility *lttv_trace_hook_get_first(LttvTraceHook *th)
+struct marker_info *lttv_trace_hook_get_marker(LttvTraceHook *th)
 {
   g_assert(th->fac_list->len > 0);
   return g_array_index(th->fac_list, LttvTraceHookByFacility*, 0);
@@ -981,51 +984,29 @@ LttvTraceHookByFacility *lttv_trace_hook_get_first(LttvTraceHook *th)
 
 /* Returns 0 on success, -1 if fails. */
 gint
-lttv_trace_find_hook(LttTrace *t, GQuark facility, GQuark event, 
+lttv_trace_find_hook(LttTrace *t, GQuark event, 
     GQuark field1, GQuark field2, GQuark field3, LttvHook h, gpointer hook_data,
     LttvTraceHook *th)
 {
-  LttFacility *f;
-
   LttEventType *et, *first_et;
 
-  GArray *facilities;
-
-  guint i, fac_id, ev_id;
-
-  LttvTraceHookByFacility *thf, *first_thf;
+  struct marker_info *info;
 
-  facilities = ltt_trace_facility_get_by_name(t, facility);
+  guint i, ev_id;
 
-  if(unlikely(facilities == NULL)) goto facility_error;
+  head = marker_get_info_from_name(t, event);
 
-  th->fac_index = g_array_sized_new(FALSE, TRUE,
-             sizeof(LttvTraceHookByFacility),
-             NUM_FACILITIES);
-  th->fac_index = g_array_set_size(th->fac_index, NUM_FACILITIES);
-
-  th->fac_list = g_array_sized_new(FALSE, TRUE,
-             sizeof(LttvTraceHookByFacility*),
-             facilities->len);
-  th->fac_list = g_array_set_size(th->fac_list, facilities->len);
-  
-  fac_id = g_array_index(facilities, guint, 0);
-  f = ltt_trace_get_facility_by_num(t, fac_id);
-
-  et = ltt_facility_eventtype_get_by_name(f, event);
-  if(unlikely(et == NULL)) goto event_error;
-  
-  thf = &g_array_index(th->fac_index, LttvTraceHookByFacility, fac_id);
-  g_array_index(th->fac_list, LttvTraceHookByFacility*, 0) = thf;
+  if(unlikely(head == NULL))
+    goto facility_error;
 
-  ev_id = ltt_eventtype_id(et);
+  ev_id = marker_get_id_from_info(t, info);
   
-  thf->h = h;
-  thf->id = GET_HOOK_ID(fac_id, ev_id);
-  thf->f1 = find_field(et, field1);
-  thf->f2 = find_field(et, field2);
-  thf->f3 = find_field(et, field3);
-  thf->hook_data = hook_data;
+  th->h = h;
+  th->id = ev_id;
+  th->f1 = find_field(et, field1);
+  th->f2 = find_field(et, field2);
+  th->f3 = find_field(et, field3);
+  th->hook_data = hook_data;
   
   first_thf = thf;
   first_et = et;
@@ -1340,6 +1321,7 @@ struct seek_back_data {
   LttvFilter *filter1;
   LttvFilter *filter2;
   LttvFilter *filter3;
+  gpointer data;
   check_handler *check;
   gboolean *stop_flag;
   guint raw_event_count;
@@ -1352,7 +1334,8 @@ static gint seek_back_event_hook(void *hook_data, void* call_data)
   LttvTracesetContext *tsc = tfc->t_context->ts_context;
   LttvTracesetContextPosition *pos;
 
-  if(sd->check && sd->check(sd->raw_event_count, sd->stop_flag)) return TRUE;
+  if(sd->check && sd->check(sd->raw_event_count, sd->stop_flag, sd->data))
+    return TRUE;
   sd->raw_event_count++;
 
   if(sd->filter1 != NULL && sd->filter1->head != NULL && 
@@ -1360,7 +1343,7 @@ static gint seek_back_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
   if(sd->filter2 != NULL && sd->filter2->head != NULL && 
@@ -1368,7 +1351,7 @@ static gint seek_back_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
   if(sd->filter3 != NULL && sd->filter3->head != NULL && 
@@ -1376,7 +1359,7 @@ static gint seek_back_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
 
@@ -1426,7 +1409,8 @@ guint lttv_process_traceset_seek_n_backward(LttvTracesetContext *self,
                                             gboolean *stop_flag,
                                            LttvFilter *filter1,
                                            LttvFilter *filter2,
-                                           LttvFilter *filter3)
+                                           LttvFilter *filter3,
+                                           gpointer data)
 {
   if(lttv_traceset_number(self->ts) == 0) return 0;
   g_assert(ltt_time_compare(first_offset, ltt_time_zero) != 0);
@@ -1450,6 +1434,7 @@ guint lttv_process_traceset_seek_n_backward(LttvTracesetContext *self,
   sd.filter1 = filter1;
   sd.filter2 = filter2;
   sd.filter3 = filter3;
+  sd.data = data;
   sd.n = n;
   sd.check = check;
   sd.stop_flag = stop_flag;
@@ -1562,6 +1547,7 @@ struct seek_forward_data {
   LttvFilter *filter1;
   LttvFilter *filter2;
   LttvFilter *filter3;
+  gpointer data;
   check_handler *check;
   gboolean *stop_flag;
   guint raw_event_count;  /* event counter */
@@ -1572,7 +1558,8 @@ static gint seek_forward_event_hook(void *hook_data, void* call_data)
   struct seek_forward_data *sd = (struct seek_forward_data*)hook_data;
   LttvTracefileContext *tfc = (LttvTracefileContext*)call_data;
 
-  if(sd->check && sd->check(sd->raw_event_count, sd->stop_flag)) return TRUE;
+  if(sd->check && sd->check(sd->raw_event_count, sd->stop_flag, sd->data))
+    return TRUE;
   sd->raw_event_count++;
 
   if(sd->filter1 != NULL && sd->filter1->head != NULL && 
@@ -1580,7 +1567,7 @@ static gint seek_forward_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
   if(sd->filter2 != NULL && sd->filter2->head != NULL && 
@@ -1588,7 +1575,7 @@ static gint seek_forward_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
   if(sd->filter3 != NULL && sd->filter3->head != NULL && 
@@ -1596,7 +1583,7 @@ static gint seek_forward_event_hook(void *hook_data, void* call_data)
           ltt_tracefile_get_event(tfc->tf),
           tfc->tf,
           tfc->t_context->t,
-          tfc)) {
+          tfc,NULL,NULL)) {
          return FALSE;
   }
 
@@ -1621,7 +1608,8 @@ guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
                                           gboolean *stop_flag,
                                          LttvFilter *filter1,
                                          LttvFilter *filter2,
-                                         LttvFilter *filter3)
+                                         LttvFilter *filter3,
+                                         gpointer data)
 {
   struct seek_forward_data sd;
   sd.event_count = 0;
@@ -1629,6 +1617,7 @@ guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
   sd.filter1 = filter1;
   sd.filter2 = filter2;
   sd.filter3 = filter3;
+  sd.data = data;
   sd.check = check;
   sd.stop_flag = stop_flag;
   sd.raw_event_count = 0;
This page took 0.026635 seconds and 4 git commands to generate.