projects
/
lttv.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
glib 2.4 compat
[lttv.git]
/
ltt
/
branches
/
poly
/
lttv
/
lttv
/
tracecontext.c
diff --git
a/ltt/branches/poly/lttv/lttv/tracecontext.c
b/ltt/branches/poly/lttv/lttv/tracecontext.c
index b22f06eb50ed93a4431f119861ed88a0ce987129..657664b721e93e9381085493b420312e4825ecd3 100644
(file)
--- a/
ltt/branches/poly/lttv/lttv/tracecontext.c
+++ b/
ltt/branches/poly/lttv/lttv/tracecontext.c
@@
-21,6
+21,7
@@
#endif
#include <string.h>
#endif
#include <string.h>
+#include <lttv/lttv.h>
#include <lttv/tracecontext.h>
#include <ltt/event.h>
#include <ltt/facility.h>
#include <lttv/tracecontext.h>
#include <ltt/event.h>
#include <ltt/facility.h>
@@
-703,7
+704,7
@@
guint lttv_process_traceset_middle(LttvTracesetContext *self,
//enum read_state last_read_state = LAST_NONE;
//enum read_state last_read_state = LAST_NONE;
- g
boolean last_ret = FALSE
; /* return value of the last hook list called */
+ g
int last_ret = 0
; /* return value of the last hook list called */
/* Get the next event from the pqueue, call its hooks,
reinsert in the pqueue the following event from the same tracefile
/* Get the next event from the pqueue, call its hooks,
reinsert in the pqueue the following event from the same tracefile
@@
-772,12
+773,14
@@
guint lttv_process_traceset_middle(LttvTracesetContext *self,
last_ret = lttv_hooks_call_merge(tfc->event, tfc,
lttv_hooks_by_id_get(tfc->event_by_id, id), tfc);
last_ret = lttv_hooks_call_merge(tfc->event, tfc,
lttv_hooks_by_id_get(tfc->event_by_id, id), tfc);
- if(unlikely(read_ret == 2)) {
+#if 0
+ /* This is buggy : it won't work well with state computation */
+ if(unlikely(last_ret == 2)) {
/* This is a case where we want to stay at this position and stop read. */
g_tree_insert(pqueue, tfc, tfc);
return count - 1;
}
/* This is a case where we want to stay at this position and stop read. */
g_tree_insert(pqueue, tfc, tfc);
return count - 1;
}
-
+#endif //0
read_ret = ltt_tracefile_read(tfc->tf);
read_ret = ltt_tracefile_read(tfc->tf);
@@
-1544,25
+1547,20
@@
static gint seek_forward_event_hook(void *hook_data, void* call_data)
struct seek_forward_data *sd = (struct seek_forward_data*)hook_data;
LttvTracefileContext *tfc = (LttvTracefileContext*)call_data;
struct seek_forward_data *sd = (struct seek_forward_data*)hook_data;
LttvTracefileContext *tfc = (LttvTracefileContext*)call_data;
- if(sd->filter != NULL) {
- if(!lttv_filter_tree_parse(sd->filter->head,
+ if(sd->filter == NULL || lttv_filter_tree_parse(sd->filter->head,
ltt_tracefile_get_event(tfc->tf),
tfc->tf,
tfc->t_context->t,
ltt_tracefile_get_event(tfc->tf),
tfc->tf,
tfc->t_context->t,
- tfc))
- return FALSE;
- }
-
-
- if(sd->event_count >= sd->n)
- return 2; /* Stay at the same position */
- else {
+ tfc)) {
sd->event_count++;
sd->event_count++;
- return FALSE;
+ if(sd->event_count >= sd->n)
+ return TRUE;
}
}
+ return FALSE;
}
}
-/* Seek back n events forward from the current position
+/* Seek back n events forward from the current position (1 to n)
+ * 0 is ok too, but it will actually do nothing.
*
* Parameters :
* @self the trace set context
*
* Parameters :
* @self the trace set context
@@
-1578,6
+1576,9
@@
guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
sd.event_count = 0;
sd.n = n;
sd.filter = filter;
sd.event_count = 0;
sd.n = n;
sd.filter = filter;
+
+ if(sd.event_count >= sd.n) return sd.event_count;
+
LttvHooks *hooks = lttv_hooks_new();
lttv_hooks_add(hooks, seek_forward_event_hook, &sd, LTTV_PRIO_DEFAULT);
LttvHooks *hooks = lttv_hooks_new();
lttv_hooks_add(hooks, seek_forward_event_hook, &sd, LTTV_PRIO_DEFAULT);
@@
-1591,7
+1592,9
@@
guint lttv_process_traceset_seek_n_forward(LttvTracesetContext *self,
G_MAXUINT, NULL);
/* Here, our position is either the end of traceset, or the exact position
G_MAXUINT, NULL);
/* Here, our position is either the end of traceset, or the exact position
- * after n events : leave it like this. */
+ * after n events : leave it like this. This might be placed on an event that
+ * will be filtered out, we don't care : all we know is that the following
+ * event filtered in will be the right one. */
lttv_process_traceset_end(self, NULL, NULL, NULL, hooks, NULL);
lttv_process_traceset_end(self, NULL, NULL, NULL, hooks, NULL);
This page took
0.024843 seconds
and
4
git commands to generate.