1 /* This file is part of the Linux Trace Toolkit viewer
2 * Copyright (C) 2003-2004 Michel Dagenais
3 * Copyright (C) 2012 Yannick Brosseau
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License Version 2 as
7 * published by the Free Software Foundation;
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
23 #include <lttv/traceset-process.h>
24 #include <lttv/traceset.h>
25 #include <lttv/event.h>
26 #include <babeltrace/context.h>
27 #include <babeltrace/iterator.h>
29 #include <babeltrace/ctf/events.h>
30 #include <babeltrace/ctf/iterator.h>
32 void lttv_process_traceset_begin(LttvTraceset
*traceset
,
33 LttvHooks
*before_traceset
,
34 LttvHooks
*before_trace
,
38 /* simply add hooks in context. _before hooks are called by add_hooks. */
39 /* It calls all before_traceset, before_trace, and before_tracefile hooks. */
40 lttv_traceset_add_hooks(traceset
,
48 guint
lttv_process_traceset_middle(LttvTraceset
*traceset
,
51 const LttvTracesetPosition
*end_position
)
56 struct bt_ctf_event
*bt_event
;
59 struct bt_iter_pos begin_pos
;
61 begin_pos
.type
= BT_SEEK_BEGIN
;
64 traceset
->iter
= bt_ctf_iter_create(lttv_traceset_get_context(traceset
),
70 if((count
>= nb_events
) && (nb_events
!= G_MAXULONG
)) {
74 if((bt_event
= bt_ctf_iter_read_event(traceset
->iter
)) != NULL
) {
78 event
.bt_event
= bt_event
;
79 /* TODO ybrosseau 2012-04-01: use bt_ctf_get_trace_handle
80 to retrieve the right state container */
81 event
.state
= traceset
->tmpState
;
83 lttv_hooks_call(traceset
->event_hooks
, &event
);
85 if(bt_iter_next(bt_ctf_get_iter(traceset
->iter
)) < 0) {
86 printf("ERROR NEXT\n");
102 void lttv_process_traceset_end(LttvTraceset
*traceset
,
103 LttvHooks
*after_traceset
,
104 LttvHooks
*after_trace
,
107 /* Remove hooks from context. _after hooks are called by remove_hooks. */
108 /* It calls all after_traceset, after_trace, and after_tracefile hooks. */
109 lttv_traceset_remove_hooks(traceset
,
117 void lttv_traceset_add_hooks(LttvTraceset
*traceset
,
118 LttvHooks
*before_traceset
,
119 LttvHooks
*before_trace
,
127 lttv_hooks_call(before_traceset
, traceset
);
129 lttv_hooks_add_list(traceset
->event_hooks
, event
);
131 nb_trace
= lttv_traceset_number(traceset
);
133 for(i
= 0 ; i
< nb_trace
; i
++) {
134 trace
= (LttvTrace
*)g_ptr_array_index(traceset
->traces
,i
);
135 lttv_trace_add_hooks(trace
,
141 void lttv_traceset_remove_hooks(LttvTraceset
*traceset
,
142 LttvHooks
*after_traceset
,
143 LttvHooks
*after_trace
,
151 nb_trace
= lttv_traceset_number(traceset
);
153 for(i
= 0 ; i
< nb_trace
; i
++) {
154 trace
= (LttvTrace
*)g_ptr_array_index(traceset
->traces
,i
);
155 lttv_trace_remove_hooks(trace
,
161 lttv_hooks_call(after_traceset
, traceset
);
167 void lttv_trace_add_hooks(LttvTrace
*trace
,
168 LttvHooks
*before_trace
,
171 lttv_hooks_call(before_trace
, trace
);
174 void lttv_trace_remove_hooks(LttvTrace
*trace
,
175 LttvHooks
*after_trace
,
179 lttv_hooks_call(after_trace
, trace
);
183 void lttv_process_traceset_seek_time(LttvTraceset
*traceset
, LttTime start
)
185 #ifdef WAIT_FOR_BABELTRACE_FIX_SEEK_ZERO
186 struct bt_iter_pos seekpos
;
188 seekpos
.type
= BT_SEEK_TIME
;
189 seekpos
.u
.seek_time
= ltt_time_to_uint64(start
);
190 ret
= bt_iter_set_pos(bt_ctf_get_iter(self
->iter
), &seekpos
);
192 printf("Seek by time error: %s,\n",strerror(-ret
));
195 #warning Seek time disabled because of babeltrace bugs
This page took 0.034182 seconds and 5 git commands to generate.