tracing: move PRED macros to trace_events_filter.c
Move DEFINE_COMPARISON_PRED() and DEFINE_EQUALITY_PRED() to kernel/trace/trace_events_filter.c Signed-off-by: Li Zefan <lizf@cn.fujitsu.com> LKML-Reference: <4AA8579B.4020706@cn.fujitsu.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
a5921c6c37
commit
197e2eabc9
|
@ -800,47 +800,6 @@ filter_check_discard(struct ftrace_event_call *call, void *rec,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DEFINE_COMPARISON_PRED(type) \
|
|
||||||
static int filter_pred_##type(struct filter_pred *pred, void *event, \
|
|
||||||
int val1, int val2) \
|
|
||||||
{ \
|
|
||||||
type *addr = (type *)(event + pred->offset); \
|
|
||||||
type val = (type)pred->val; \
|
|
||||||
int match = 0; \
|
|
||||||
\
|
|
||||||
switch (pred->op) { \
|
|
||||||
case OP_LT: \
|
|
||||||
match = (*addr < val); \
|
|
||||||
break; \
|
|
||||||
case OP_LE: \
|
|
||||||
match = (*addr <= val); \
|
|
||||||
break; \
|
|
||||||
case OP_GT: \
|
|
||||||
match = (*addr > val); \
|
|
||||||
break; \
|
|
||||||
case OP_GE: \
|
|
||||||
match = (*addr >= val); \
|
|
||||||
break; \
|
|
||||||
default: \
|
|
||||||
break; \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
return match; \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DEFINE_EQUALITY_PRED(size) \
|
|
||||||
static int filter_pred_##size(struct filter_pred *pred, void *event, \
|
|
||||||
int val1, int val2) \
|
|
||||||
{ \
|
|
||||||
u##size *addr = (u##size *)(event + pred->offset); \
|
|
||||||
u##size val = (u##size)pred->val; \
|
|
||||||
int match; \
|
|
||||||
\
|
|
||||||
match = (val == *addr) ^ pred->not; \
|
|
||||||
\
|
|
||||||
return match; \
|
|
||||||
}
|
|
||||||
|
|
||||||
extern struct mutex event_mutex;
|
extern struct mutex event_mutex;
|
||||||
extern struct list_head ftrace_events;
|
extern struct list_head ftrace_events;
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,47 @@ struct filter_parse_state {
|
||||||
} operand;
|
} operand;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define DEFINE_COMPARISON_PRED(type) \
|
||||||
|
static int filter_pred_##type(struct filter_pred *pred, void *event, \
|
||||||
|
int val1, int val2) \
|
||||||
|
{ \
|
||||||
|
type *addr = (type *)(event + pred->offset); \
|
||||||
|
type val = (type)pred->val; \
|
||||||
|
int match = 0; \
|
||||||
|
\
|
||||||
|
switch (pred->op) { \
|
||||||
|
case OP_LT: \
|
||||||
|
match = (*addr < val); \
|
||||||
|
break; \
|
||||||
|
case OP_LE: \
|
||||||
|
match = (*addr <= val); \
|
||||||
|
break; \
|
||||||
|
case OP_GT: \
|
||||||
|
match = (*addr > val); \
|
||||||
|
break; \
|
||||||
|
case OP_GE: \
|
||||||
|
match = (*addr >= val); \
|
||||||
|
break; \
|
||||||
|
default: \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
\
|
||||||
|
return match; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DEFINE_EQUALITY_PRED(size) \
|
||||||
|
static int filter_pred_##size(struct filter_pred *pred, void *event, \
|
||||||
|
int val1, int val2) \
|
||||||
|
{ \
|
||||||
|
u##size *addr = (u##size *)(event + pred->offset); \
|
||||||
|
u##size val = (u##size)pred->val; \
|
||||||
|
int match; \
|
||||||
|
\
|
||||||
|
match = (val == *addr) ^ pred->not; \
|
||||||
|
\
|
||||||
|
return match; \
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_COMPARISON_PRED(s64);
|
DEFINE_COMPARISON_PRED(s64);
|
||||||
DEFINE_COMPARISON_PRED(u64);
|
DEFINE_COMPARISON_PRED(u64);
|
||||||
DEFINE_COMPARISON_PRED(s32);
|
DEFINE_COMPARISON_PRED(s32);
|
||||||
|
|
Loading…
Reference in New Issue