static gboolean a_stats;
-LttvFilter *a_lttv_filter;
-
void lttv_trace_option(void *hook_data)
{
LttTrace *trace;
static gboolean process_traceset(void *hook_data, void *call_data)
{
- LttvAttributeValue value;
+ LttvAttributeValue value_expression, value_filter;
LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
if(a_stats) lttv_stats_add_event_hooks(tscs);
g_assert(lttv_iattribute_find_by_path(attributes, "filter/expression",
- LTTV_POINTER, &value));
+ LTTV_POINTER, &value_expression));
+
+ g_assert(lttv_iattribute_find_by_path(attributes, "filter/lttv_filter",
+ LTTV_POINTER, &value_filter));
- a_lttv_filter = lttv_filter_new();
- g_debug("Filter string: %s",((GString*)*(value.v_pointer))->str);
+ *(value_filter.v_pointer) = lttv_filter_new();
+ g_debug("Filter string: %s",((GString*)*(value_expression.v_pointer))->str);
- g_assert(lttv_filter_append_expression(a_lttv_filter,((GString*)*(value.v_pointer))->str));
+ g_assert(lttv_filter_append_expression(*(value_filter.v_pointer),((GString*)*(value_expression.v_pointer))->str));
//lttv_traceset_context_add_hooks(tc,
//before_traceset, after_traceset, NULL, before_trace, after_trace,
event_hook,
NULL);
- lttv_filter_destroy(a_lttv_filter);
+ lttv_filter_destroy(*(value_filter.v_pointer));
lttv_state_remove_event_hooks(&tscs->parent);
if(a_stats) lttv_stats_remove_event_hooks(tscs);
lttv_context_fini(tc);
*before_trace,
*event_hook;
-extern LttvFilter *a_lttv_filter;
-
void print_field(LttEvent *e, LttField *f, GString *s, gboolean field_names) {
LttType *type;
static int write_event_content(void *hook_data, void *call_data)
{
+ LttvIAttribute *attributes = LTTV_IATTRIBUTE(lttv_global_attributes());
+
LttvTracefileContext *tfc = (LttvTracefileContext *)call_data;
LttvTracefileState *tfs = (LttvTracefileState *)call_data;
LttEvent *e;
+ LttvAttributeValue value_filter;
+
+ LttvFilter *filter;
+
e = tfc->e;
+
+ g_assert(lttv_iattribute_find_by_path(attributes, "filter/lttv_filter",
+ LTTV_POINTER, &value_filter));
+ filter = (LttvFilter*)*(value_filter.v_pointer);
+
/*
* call to the filter if available
*/
- if(!lttv_filter_tree_parse(a_lttv_filter->head,e,tfc->t_context->t,tfc->tf,tfs->process,tfc)) {
+ if(!lttv_filter_tree_parse(filter->head,e,tfc->tf,tfc->t_context->t,tfs->process,tfc)) {
return FALSE;
}