#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
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 {
/* 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;
} 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);
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);
#define BACKWARD_SEEK_MUL 2 /* Multiplication factor of time_offset between
backward seek iterations */
-static const LttTime seek_back_default_offset = { 0, 1000000 };
+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,
- LttvFilter *filter);
+ 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 n,
LttTime first_offset,
seek_time_fct,
- LttvFilter *filter);
+ check_handler *check,
+ gboolean *stop_flag,
+ LttvFilter *filter1,
+ LttvFilter *filter2,
+ LttvFilter *filter3,
+ gpointer data);
#endif // PROCESSTRACE_H