[PATCH] kernel-shark: Do not change the PLUGIN_UNTOUCHED bit flag when filtering

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The "visible" field of the entry has one special bit flag, that helps
the GUI to display the original tracing data (as recorded) regardless
of the possible modifications made by the plugins. This bit flag must
be preserved when applying or removing filters.

Signed-off-by: Yordan Karadzhov (VMware) <y.karadz@xxxxxxxxx>
---
 kernel-shark/src/libkshark.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/kernel-shark/src/libkshark.c b/kernel-shark/src/libkshark.c
index 0905359..52aacd3 100644
--- a/kernel-shark/src/libkshark.c
+++ b/kernel-shark/src/libkshark.c
@@ -489,6 +489,11 @@ static inline void unset_event_filter_flag(struct kshark_context *kshark_ctx,
 	e->visible &= ~event_mask;
 }
 
+static void set_all_visible(uint16_t *v) {
+	/*  Keep the original value of the PLUGIN_UNTOUCHED bit flag. */
+	*v |= 0xFF & ~KS_PLUGIN_UNTOUCHED_MASK;
+}
+
 /**
  * @brief This function loops over the array of entries specified by "data"
  *	  and "n_entries" and sets the "visible" fields of each entry
@@ -525,7 +530,7 @@ void kshark_filter_entries(struct kshark_context *kshark_ctx,
 	/* Apply only the Id filters. */
 	for (i = 0; i < n_entries; ++i) {
 		/* Start with and entry which is visible everywhere. */
-		data[i]->visible = 0xFF;
+		set_all_visible(&data[i]->visible);
 
 		/* Apply event filtering. */
 		if (!kshark_show_event(kshark_ctx, data[i]->event_id))
@@ -555,9 +560,8 @@ void kshark_clear_all_filters(struct kshark_context *kshark_ctx,
 			      size_t n_entries)
 {
 	int i;
-
 	for (i = 0; i < n_entries; ++i)
-		data[i]->visible = 0xFF;
+		set_all_visible(&data[i]->visible);
 }
 
 static void kshark_set_entry_values(struct kshark_context *kshark_ctx,
-- 
2.25.1




[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux