/* PID */
pid = ltt_event_get_unsigned(e, thf->f1);
/* PID */
pid = ltt_event_get_unsigned(e, thf->f1);
+ s->parent.target_pid = pid;
+
/* Parent PID */
parent_pid = ltt_event_get_unsigned(e, thf->f2);
/* Parent PID */
parent_pid = ltt_event_get_unsigned(e, thf->f2);
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
- if(tfs->parent.target_pid) return tfs->parent.target_pid;
+ if(tfs->parent.target_pid >= 0) return tfs->parent.target_pid;
else return process->pid;
}
else return process->pid;
}
tfc->event = lttv_hooks_new();
tfc->event_by_id = lttv_hooks_by_id_new();
tfc->a = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL);
tfc->event = lttv_hooks_new();
tfc->event_by_id = lttv_hooks_by_id_new();
tfc->a = g_object_new(LTTV_ATTRIBUTE_TYPE, NULL);
fac_id = ltt_event_facility_id(e);
ev_id = ltt_event_eventtype_id(e);
id = GET_HOOK_ID(fac_id, ev_id);
fac_id = ltt_event_facility_id(e);
ev_id = ltt_event_eventtype_id(e);
id = GET_HOOK_ID(fac_id, ev_id);
- tfc->target_pid = 0; /* unset target PID */
+ tfc->target_pid = -1; /* unset target PID */
/* Hooks :
* return values : 0 : continue read, 1 : go to next position and stop read,
* 2 : stay at the current position and stop read */
/* Hooks :
* return values : 0 : continue read, 1 : go to next position and stop read,
* 2 : stay at the current position and stop read */
LttvHooksById *event_by_id;
LttTime timestamp;
LttvAttribute *a;
LttvHooksById *event_by_id;
LttTime timestamp;
LttvAttribute *a;
- guint target_pid; /* Target PID of the event.
- Updated by state.c. 0 means unset. */
+ gint target_pid; /* Target PID of the event.
+ Updated by state.c. -1 means unset. */
};
struct _LttvTracefileContextClass {
};
struct _LttvTracefileContextClass {
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ gint target_pid_saved = tfc->target_pid;
LttTime evtime = ltt_event_time(e);
LttTime evtime = ltt_event_time(e);
+ LttvFilter *filter = control_flow_data->filter;
/* we are in a schedchange, before the state update. We must draw the
* items corresponding to the state before it changes : now is the right
/* we are in a schedchange, before the state update. We must draw the
* items corresponding to the state before it changes : now is the right
pid_in = ltt_event_get_long_unsigned(e, thf->f2);
}
pid_in = ltt_event_get_long_unsigned(e, thf->f2);
}
+ tfc->target_pid = pid_out;
+ if(!filter || !filter->head ||
+ lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc)) {
/* For the pid_out */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
/* For the pid_out */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
+ tfc->target_pid = pid_in;
+ if(!filter || !filter->head ||
+ lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc)) {
/* For the pid_in */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
/* For the pid_in */
/* First, check if the current process is in the state computation
* process list. If it is there, that means we must add it right now and
} else
g_warning("Cannot find pin_in in schedchange %u", pid_in);
}
} else
g_warning("Cannot find pin_in in schedchange %u", pid_in);
}
+ tfc->target_pid = target_pid_saved;
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
/* we are in a execmode, before the state update. We must draw the
LttTime evtime = ltt_event_time(e);
/* we are in a execmode, before the state update. We must draw the
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
LttTime evtime = ltt_event_time(e);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
guint child_pid;
LttTime evtime = ltt_event_time(e);
guint child_pid;
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttvTraceState *ts = (LttvTraceState *)tfc->t_context;
LttvTraceState *ts = (LttvTraceState *)tfc->t_context;
+ LttEvent *e;
+ e = ltt_tracefile_get_event(tfc->tf);
+
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
g_assert(process != NULL);
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
g_assert(process != NULL);
LttvTraceState *ts = (LttvTraceState *)tfc->t_context;
LttvTraceState *ts = (LttvTraceState *)tfc->t_context;
+ LttEvent *e;
+ e = ltt_tracefile_get_event(tfc->tf);
+
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
g_assert(process != NULL);
guint cpu = tfs->cpu;
LttvProcessState *process = ts->running_process[cpu];
g_assert(process != NULL);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
LttEvent *e;
e = ltt_tracefile_get_event(tfc->tf);
+ LttvFilter *filter = control_flow_data->filter;
+ if(filter != NULL && filter->head != NULL)
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,
+ tfc->t_context->t,tfc))
+ return FALSE;
+
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */
LttTime evtime = ltt_event_time(e);
/* Add process to process list (if not present) */