tracecontext.c: start conversion
[lttv.git] / ltt / branches / poly / lttv / lttv / tracecontext.h
index f1396463e79cfdc15165070a12e5b6239c218bb9..af65046378cdc819394fe96c7cdc1c8bd1f4160f 100644 (file)
@@ -23,6 +23,7 @@
 #include <lttv/attribute.h>
 #include <lttv/hook.h>
 #include <ltt/ltt.h>
+#include <ltt/markers.h>
 
 /* This is the generic part of trace processing. All events within a
    certain time interval are accessed and processing hooks are called for
@@ -77,6 +78,11 @@ typedef struct _LttvTracefileContextClass LttvTracefileContextClass;
 typedef struct _LttvTracesetContextPosition LttvTracesetContextPosition;
 typedef struct _LttvTraceContextPosition LttvTraceContextPosition;
 
+#ifndef LTTVFILTER_TYPE_DEFINED
+typedef struct _LttvFilter LttvFilter;
+#define LTTVFILTER_TYPE_DEFINED
+#endif
+
 #define LTTV_TRACESET_CONTEXT_TYPE  (lttv_traceset_context_get_type ())
 #define LTTV_TRACESET_CONTEXT(obj)  (G_TYPE_CHECK_INSTANCE_CAST ((obj), LTTV_TRACESET_CONTEXT_TYPE, LttvTracesetContext))
 #define LTTV_TRACESET_CONTEXT_CLASS(vtable)  (G_TYPE_CHECK_CLASS_CAST ((vtable), LTTV_TRACESET_CONTEXT_TYPE, LttvTracesetContextClass))
@@ -142,6 +148,7 @@ struct _LttvTraceContext {
   GArray *tracefiles;
   LttvAttribute *a;
   LttvAttribute *t_a;
+  TimeInterval time_span;
 };
 
 struct _LttvTraceContextClass {
@@ -169,6 +176,8 @@ struct _LttvTracefileContext {
   LttvHooksById *event_by_id;
   LttTime timestamp;
   LttvAttribute *a;
+  gint target_pid;          /* Target PID of the event.
+                               Updated by state.c. -1 means unset. */
 };
 
 struct _LttvTracefileContextClass {
@@ -263,31 +272,19 @@ void lttv_tracefile_context_add_hooks_by_id(LttvTracefileContext *self,
 void lttv_tracefile_context_remove_hooks_by_id(LttvTracefileContext *self,
                                               unsigned i);
 
-/* A LttvTraceHook has two arrays of LttvTraceHookByFacility,
- * indexed by facility ID and a simple array used to walk all the hooks */
 typedef struct _LttvTraceHook {
-  GArray *fac_index;
-  GArray *fac_list;
-} LttvTraceHook;
-
-typedef struct _LttvTraceHookByFacility {
   LttvHook h;
-  guint id;
-  LttField *f1;
-  LttField *f2;
-  LttField *f3;
+  guint id;  /* id of the event associated with this hook */
+  struct marker_field *f1;
+  struct marker_field *f2;
+  struct marker_field *f3;
   gpointer hook_data;
-} LttvTraceHookByFacility;
-
+} LttvTraceHook;
 
-/* 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);
 
-LttvTraceHookByFacility *lttv_trace_hook_get_fac(
-    LttvTraceHook *th, guint facility_id);
+/* Get the head of marker list correcponding to the given trace hook.
+ */
+struct marker_info *lttv_trace_hook_get_marker(LttTrace *t, LttvTraceHook *th);
 
 void lttv_trace_hook_destroy(LttvTraceHook *th);
 
@@ -298,7 +295,7 @@ void lttv_trace_hook_destroy(LttvTraceHook *th);
    registering a hook using this structure as event data;
    it already contains the (up to three) needed fields handles. */
  
-gint lttv_trace_find_hook(LttTrace *t, GQuark facility, GQuark event_type,
+gint lttv_trace_find_hook(LttTrace *t, GQuark event_type,
     GQuark field1, GQuark field2, GQuark field3, LttvHook h,
     gpointer hook_data, LttvTraceHook *th);
 
@@ -306,7 +303,8 @@ LttvTracefileContext *lttv_traceset_context_get_current_tfc(
                              LttvTracesetContext *self);
 
 
-LttvTracesetContextPosition *lttv_traceset_context_position_new();
+LttvTracesetContextPosition *lttv_traceset_context_position_new(
+    const LttvTracesetContext *self);
 
 void lttv_traceset_context_position_save(const LttvTracesetContext *self,
                                     LttvTracesetContextPosition *pos);
@@ -341,10 +339,31 @@ void lttv_process_traceset_get_sync_data(LttvTracesetContext *tsc);
 #define BACKWARD_SEEK_MUL 2 /* Multiplication factor of time_offset between
                                backward seek iterations */
 
-guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
-                                           guint n);
+static const LttTime seek_back_default_offset = { 1, 0 };
+
+typedef gboolean check_handler(guint count, gboolean *stop_flag, gpointer data);
 
+guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
+                                           guint n,
+                                          check_handler *check,
+                                          gboolean *stop_flag,
+                                          LttvFilter *filter1,
+                                          LttvFilter *filter2,
+                                          LttvFilter *filter3,
+                                          gpointer data);
+typedef void (*seek_time_fct)(LttvTracesetContext *self, LttTime start);
+
+/* If first_offset is ltt_time_zero, it will choose a default value */
 guint lttv_process_traceset_seek_n_backward(LttvTracesetContext *self,
-                                           guint n, LttTime first_offset);
+                                            guint n,
+                                            LttTime first_offset,
+                                            seek_time_fct,
+                                           check_handler *check,
+                                           gboolean *stop_flag,
+                                           LttvFilter *filter1,
+                                           LttvFilter *filter2,
+                                           LttvFilter *filter3,
+                                           gpointer data);
+
 
 #endif // PROCESSTRACE_H
This page took 0.029761 seconds and 4 git commands to generate.