fix state computation so it put max time computed in seek to end of trace time value...
[lttv.git] / ltt / branches / poly / lttv / lttv / tracecontext.h
index f6ea132250462bff37cae443adaf1e70115b6ce5..c200ff5156c18b21f75d57e922bbb5311470c9b5 100644 (file)
@@ -77,6 +77,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))
@@ -93,6 +98,9 @@ struct _LttvTracesetContext {
   LttvAttribute *ts_a;
   TimeInterval time_span;
   GTree *pqueue;
+
+  LttvTracesetContextPosition *sync_position;   /* position at which to sync the
+                                                   trace context */
 };
 
 struct _LttvTracesetContextClass {
@@ -139,6 +147,7 @@ struct _LttvTraceContext {
   GArray *tracefiles;
   LttvAttribute *a;
   LttvAttribute *t_a;
+  TimeInterval time_span;
 };
 
 struct _LttvTraceContextClass {
@@ -273,6 +282,7 @@ typedef struct _LttvTraceHookByFacility {
   LttField *f1;
   LttField *f2;
   LttField *f3;
+  gpointer hook_data;
 } LttvTraceHookByFacility;
 
 
@@ -295,13 +305,15 @@ void lttv_trace_hook_destroy(LttvTraceHook *th);
    it already contains the (up to three) needed fields handles. */
  
 gint lttv_trace_find_hook(LttTrace *t, GQuark facility, GQuark event_type,
-    GQuark field1, GQuark field2, GQuark field3, LttvHook h, LttvTraceHook *th);
+    GQuark field1, GQuark field2, GQuark field3, LttvHook h,
+    gpointer hook_data, LttvTraceHook *th);
 
 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);
@@ -323,4 +335,32 @@ LttTime lttv_traceset_context_position_get_time(
 
 gint compare_tracefile(gconstpointer a, gconstpointer b);
 
+
+/* Synchronisation helpers : save/restore synchronization between ltt traces and
+ * a traceset context. */
+void lttv_process_traceset_synchronize_tracefiles(LttvTracesetContext *tsc);
+
+void lttv_process_traceset_get_sync_data(LttvTracesetContext *tsc);
+
+/* Seek n events forward and backward (without filtering) : only use these where
+ * necessary : the seek backward is costy. */
+
+#define BACKWARD_SEEK_MUL 2 /* Multiplication factor of time_offset between
+                               backward seek iterations */
+
+static const LttTime seek_back_default_offset = { 0, 100000000 };
+
+guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
+                                           guint n,
+                                           LttvFilter *filter);
+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,
+                                            seek_time_fct,
+                                            LttvFilter *filter);
+
+
 #endif // PROCESSTRACE_H
This page took 0.027085 seconds and 4 git commands to generate.