diff options
Diffstat (limited to 'kernel/trace/trace.h')
-rw-r--r-- | kernel/trace/trace.h | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 9021f8c0c0c3..5e9dfc6286dd 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h | |||
@@ -272,8 +272,8 @@ struct tracer { | |||
272 | /* If you handled the flag setting, return 0 */ | 272 | /* If you handled the flag setting, return 0 */ |
273 | int (*set_flag)(u32 old_flags, u32 bit, int set); | 273 | int (*set_flag)(u32 old_flags, u32 bit, int set); |
274 | struct tracer *next; | 274 | struct tracer *next; |
275 | int print_max; | ||
276 | struct tracer_flags *flags; | 275 | struct tracer_flags *flags; |
276 | int print_max; | ||
277 | int use_max_tr; | 277 | int use_max_tr; |
278 | }; | 278 | }; |
279 | 279 | ||
@@ -606,6 +606,7 @@ enum trace_iterator_flags { | |||
606 | TRACE_ITER_SLEEP_TIME = 0x40000, | 606 | TRACE_ITER_SLEEP_TIME = 0x40000, |
607 | TRACE_ITER_GRAPH_TIME = 0x80000, | 607 | TRACE_ITER_GRAPH_TIME = 0x80000, |
608 | TRACE_ITER_RECORD_CMD = 0x100000, | 608 | TRACE_ITER_RECORD_CMD = 0x100000, |
609 | TRACE_ITER_OVERWRITE = 0x200000, | ||
609 | }; | 610 | }; |
610 | 611 | ||
611 | /* | 612 | /* |
@@ -661,8 +662,10 @@ struct ftrace_event_field { | |||
661 | }; | 662 | }; |
662 | 663 | ||
663 | struct event_filter { | 664 | struct event_filter { |
664 | int n_preds; | 665 | int n_preds; /* Number assigned */ |
665 | struct filter_pred **preds; | 666 | int a_preds; /* allocated */ |
667 | struct filter_pred *preds; | ||
668 | struct filter_pred *root; | ||
666 | char *filter_string; | 669 | char *filter_string; |
667 | }; | 670 | }; |
668 | 671 | ||
@@ -674,11 +677,23 @@ struct event_subsystem { | |||
674 | int nr_events; | 677 | int nr_events; |
675 | }; | 678 | }; |
676 | 679 | ||
680 | #define FILTER_PRED_INVALID ((unsigned short)-1) | ||
681 | #define FILTER_PRED_IS_RIGHT (1 << 15) | ||
682 | #define FILTER_PRED_FOLD (1 << 15) | ||
683 | |||
684 | /* | ||
685 | * The max preds is the size of unsigned short with | ||
686 | * two flags at the MSBs. One bit is used for both the IS_RIGHT | ||
687 | * and FOLD flags. The other is reserved. | ||
688 | * | ||
689 | * 2^14 preds is way more than enough. | ||
690 | */ | ||
691 | #define MAX_FILTER_PRED 16384 | ||
692 | |||
677 | struct filter_pred; | 693 | struct filter_pred; |
678 | struct regex; | 694 | struct regex; |
679 | 695 | ||
680 | typedef int (*filter_pred_fn_t) (struct filter_pred *pred, void *event, | 696 | typedef int (*filter_pred_fn_t) (struct filter_pred *pred, void *event); |
681 | int val1, int val2); | ||
682 | 697 | ||
683 | typedef int (*regex_match_func)(char *str, struct regex *r, int len); | 698 | typedef int (*regex_match_func)(char *str, struct regex *r, int len); |
684 | 699 | ||
@@ -700,11 +715,23 @@ struct filter_pred { | |||
700 | filter_pred_fn_t fn; | 715 | filter_pred_fn_t fn; |
701 | u64 val; | 716 | u64 val; |
702 | struct regex regex; | 717 | struct regex regex; |
703 | char *field_name; | 718 | /* |
719 | * Leaf nodes use field_name, ops is used by AND and OR | ||
720 | * nodes. The field_name is always freed when freeing a pred. | ||
721 | * We can overload field_name for ops and have it freed | ||
722 | * as well. | ||
723 | */ | ||
724 | union { | ||
725 | char *field_name; | ||
726 | unsigned short *ops; | ||
727 | }; | ||
704 | int offset; | 728 | int offset; |
705 | int not; | 729 | int not; |
706 | int op; | 730 | int op; |
707 | int pop_n; | 731 | unsigned short index; |
732 | unsigned short parent; | ||
733 | unsigned short left; | ||
734 | unsigned short right; | ||
708 | }; | 735 | }; |
709 | 736 | ||
710 | extern struct list_head ftrace_common_fields; | 737 | extern struct list_head ftrace_common_fields; |