X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Ftracecontext.h;h=37c4ba17884b6b615b1df3a4a0369b950a8d59d2;hb=1caf96c1c6694cce9ba58f5582de62572781494b;hp=6df7e6fe2ea74d94de8f6657d42808e4d1fbc7bf;hpb=eed2ef37f908daf7b3f884b5d8f91dad03f10526;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/tracecontext.h b/ltt/branches/poly/lttv/lttv/tracecontext.h index 6df7e6fe..37c4ba17 100644 --- a/ltt/branches/poly/lttv/lttv/tracecontext.h +++ b/ltt/branches/poly/lttv/lttv/tracecontext.h @@ -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 { @@ -181,12 +190,6 @@ GType lttv_tracefile_context_get_type (void); void lttv_process_traceset(LttvTracesetContext *self, LttTime end, unsigned nb_events); -/* Save the complete tracefile information in the context */ -//void lttv_process_traceset_get_sync_data(LttvTracesetContext *self); - -/* Put all the tracefiles at the tracefile context position */ -void lttv_process_traceset_synchronize_tracefiles(LttvTracesetContext *self); - /* Process traceset can also be done in smaller pieces calling begin, * then seek and middle repeatedly, and end. The middle function return the * number of events processed. It will be smaller than nb_events if the end time @@ -279,6 +282,7 @@ typedef struct _LttvTraceHookByFacility { LttField *f1; LttField *f2; LttField *f3; + gpointer hook_data; } LttvTraceHookByFacility; @@ -301,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); @@ -327,8 +333,34 @@ gint lttv_traceset_context_ctx_pos_compare(const LttvTracesetContext *self, LttTime lttv_traceset_context_position_get_time( const LttvTracesetContextPosition *pos); -gboolean lttv_process_tracefile_seek_position(LttvTracefileContext *self, - const LttEventPosition *pos); +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 = { 1, 0 }; + +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