[PATCH 1/5] KernelShark: Add stream name

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

 



From: Tzvetomir (VMware)  Stoyanov <tz.stoyanov@xxxxxxxxx>

There are use cases when multiple streams can be loaded from a single
file. Ftrace instances are such example. In these cases file name could
not be used to identify the streams. A new member 'name' is added to the
'struct kshark_data_stream', used to identify the streams by the user.
By default name is equal to the file name, in cases where there is onle
one stream in the file the behaviour is not changed. When there are
multiple streams in a single file, the name is formed as
"file name:stream name".

Signed-off-by: Tzvetomir (VMware)  Stoyanov <tz.stoyanov@xxxxxxxxx>
---
 src/KsAdvFilteringDialog.cpp   | 2 +-
 src/KsWidgetsLib.cpp           | 6 +++---
 src/libkshark-plugin.c         | 2 +-
 src/libkshark.c                | 2 ++
 src/libkshark.h                | 3 +++
 src/plugins/KVMCombo.cpp       | 4 ++--
 src/plugins/event_field_plot.c | 2 +-
 src/plugins/latency_plot.c     | 4 ++--
 8 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/KsAdvFilteringDialog.cpp b/src/KsAdvFilteringDialog.cpp
index 64c4cec..6979903 100644
--- a/src/KsAdvFilteringDialog.cpp
+++ b/src/KsAdvFilteringDialog.cpp
@@ -236,7 +236,7 @@ void KsAdvFilteringDialog::_getFtraceStreams(kshark_context *kshark_ctx)
 	for (int i = 0; i < kshark_ctx->n_streams; ++i) {
 		stream = kshark_ctx->stream[streamIds[i]];
 		if (stream->format == KS_TEP_DATA)
-			_streamComboBox.addItem(QString(stream->file),
+			_streamComboBox.addItem(QString(stream->name),
 						streamIds[i]);
 	}
 
diff --git a/src/KsWidgetsLib.cpp b/src/KsWidgetsLib.cpp
index e487eb8..f006a13 100644
--- a/src/KsWidgetsLib.cpp
+++ b/src/KsWidgetsLib.cpp
@@ -325,7 +325,7 @@ void KsCheckBoxWidget::_setStream(uint8_t sd)
 	if (!stream)
 		return;
 
-	_streamName = QString(stream->file);
+	_streamName = QString(stream->name);
 
 	KsUtils::setElidedText(&_stramLabel, _streamName,
 			       Qt::ElideLeft, width());
@@ -1148,7 +1148,7 @@ KsDStreamCheckBoxWidget::KsDStreamCheckBoxWidget(QWidget *parent)
 
 	for (int i = 0; i < nStreams; ++i) {
 		stream = kshark_ctx->stream[streamIds[i]];
-		QString name(stream->file);
+		QString name(stream->name);
 		if (name < 40) {
 			nameItem = new QTableWidgetItem(name);
 		} else {
@@ -1235,7 +1235,7 @@ void KsEventFieldSelectWidget::setStreamCombo()
 		sd = streamIds[i];
 		stream = kshark_ctx->stream[sd];
 		if (_streamComboBox.findData(sd) < 0)
-			_streamComboBox.addItem(QString(stream->file), sd);
+			_streamComboBox.addItem(QString(stream->name), sd);
 	}
 	free(streamIds);
 }
diff --git a/src/libkshark-plugin.c b/src/libkshark-plugin.c
index d341fea..583ea42 100644
--- a/src/libkshark-plugin.c
+++ b/src/libkshark-plugin.c
@@ -584,7 +584,7 @@ static void plugin_init(struct kshark_data_stream *stream,
 		fprintf(stderr,
 			"plugin \"%s\" failed to initialize on stream %s\n",
 			plugin->interface->name,
-			stream->file);
+			stream->name);
 
 		plugin->status |= KSHARK_PLUGIN_FAILED;
 		plugin->status &= ~KSHARK_PLUGIN_LOADED;
diff --git a/src/libkshark.c b/src/libkshark.c
index 7013d66..375874d 100644
--- a/src/libkshark.c
+++ b/src/libkshark.c
@@ -137,6 +137,7 @@ static void kshark_stream_free(struct kshark_data_stream *stream)
 
 	free(stream->calib_array);
 	free(stream->file);
+	free(stream->name);
 	free(stream);
 }
 
@@ -255,6 +256,7 @@ int kshark_stream_open(struct kshark_data_stream *stream, const char *file)
 		return -EAGAIN;
 
 	stream->file = strdup(file);
+	stream->name = strdup(file);
 	set_format(kshark_ctx, stream, file);
 
 	switch (stream->format) {
diff --git a/src/libkshark.h b/src/libkshark.h
index 0b9053d..44bec79 100644
--- a/src/libkshark.h
+++ b/src/libkshark.h
@@ -238,6 +238,9 @@ struct kshark_data_stream {
 	/** Trace data file pathname. */
 	char			*file;
 
+	/** Stream name. */
+	char			*name;
+
 	/** System clock calibration function. */
 	time_calib_func		calib;
 
diff --git a/src/plugins/KVMCombo.cpp b/src/plugins/KVMCombo.cpp
index 9b9d7a0..ceb1f47 100644
--- a/src/plugins/KVMCombo.cpp
+++ b/src/plugins/KVMCombo.cpp
@@ -250,7 +250,7 @@ void KsComboPlotDialog::update()
 		_guestMapCount = ret;
 
 	KsUtils::setElidedText(&_hostFileLabel,
-			       kshark_ctx->stream[_guestMap[0].host_id]->file,
+			       kshark_ctx->stream[_guestMap[0].host_id]->name,
 			       Qt::ElideLeft, LABEL_WIDTH);
 
 	_guestStreamComboBox.clear();
@@ -260,7 +260,7 @@ void KsComboPlotDialog::update()
 		if (sd >= kshark_ctx->n_streams)
 			continue;
 
-		_guestStreamComboBox.addItem(kshark_ctx->stream[sd]->file, sd);
+		_guestStreamComboBox.addItem(kshark_ctx->stream[sd]->name, sd);
 		color << colTable[sd];
 		_guestStreamComboBox.setItemData(i, QBrush(color),
 						    Qt::BackgroundRole);
diff --git a/src/plugins/event_field_plot.c b/src/plugins/event_field_plot.c
index fcc2a19..3c61cbf 100644
--- a/src/plugins/event_field_plot.c
+++ b/src/plugins/event_field_plot.c
@@ -72,7 +72,7 @@ plugin_efp_init_context(struct kshark_data_stream *stream)
 
 	if (plugin_ctx->event_id < 0) {
 		fprintf(stderr, "Event %s not found in stream %s\n",
-			plugin_ctx->event_name, stream->file);
+			plugin_ctx->event_name, stream->name);
 		goto fail;
 	}
 
diff --git a/src/plugins/latency_plot.c b/src/plugins/latency_plot.c
index bcd27f6..e2238e4 100644
--- a/src/plugins/latency_plot.c
+++ b/src/plugins/latency_plot.c
@@ -75,7 +75,7 @@ plugin_latency_init_context(struct kshark_data_stream *stream)
 		stream->interface.find_event_id(stream, plugin_ctx->event_name[0]);
 	if (plugin_ctx->event_id[0] < 0) {
 		fprintf(stderr, "Event %s not found in stream %s\n",
-			plugin_ctx->event_name[0], stream->file);
+			plugin_ctx->event_name[0], stream->name);
 		goto fail;
 	}
 
@@ -83,7 +83,7 @@ plugin_latency_init_context(struct kshark_data_stream *stream)
 		stream->interface.find_event_id(stream, plugin_ctx->event_name[1]);
 	if (plugin_ctx->event_id[1] < 0) {
 		fprintf(stderr, "Event %s not found in stream %s\n",
-			plugin_ctx->event_name[1], stream->file);
+			plugin_ctx->event_name[1], stream->name);
 		goto fail;
 	}
 
-- 
2.26.2




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

  Powered by Linux