X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Flttv%2Flttv%2Ftracecontext.h;h=be9a951444110c4abe54ad9f2f8f0eebd3a9b295;hb=3c165eaf5aa1e60ce88c036cfb692ce3e1d81585;hp=f1396463e79cfdc15165070a12e5b6239c218bb9;hpb=0bd2f89c122b8ead4c0bec1fbe25956393995622;p=lttv.git diff --git a/ltt/branches/poly/lttv/lttv/tracecontext.h b/ltt/branches/poly/lttv/lttv/tracecontext.h index f1396463..be9a9514 100644 --- a/ltt/branches/poly/lttv/lttv/tracecontext.h +++ b/ltt/branches/poly/lttv/lttv/tracecontext.h @@ -23,6 +23,7 @@ #include #include #include +#include /* 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 { @@ -266,11 +275,6 @@ void lttv_tracefile_context_remove_hooks_by_id(LttvTracefileContext *self, /* 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; @@ -280,14 +284,9 @@ typedef struct _LttvTraceHookByFacility { } LttvTraceHookByFacility; -/* 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(LttvTraceHook *th); void lttv_trace_hook_destroy(LttvTraceHook *th); @@ -298,7 +297,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 +305,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 +341,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