diff mbox series

[1/5] KernelShark: Add stream name

Message ID 20200727071823.169962-2-tz.stoyanov@gmail.com (mailing list archive)
State New
Headers show
Series Add support for opening trace.dat files with multuiple buffers | expand

Commit Message

Tzvetomir Stoyanov (VMware) July 27, 2020, 7:18 a.m. UTC
From: Tzvetomir (VMware)  Stoyanov <tz.stoyanov@gmail.com>

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@gmail.com>
---
 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(-)

Comments

Steven Rostedt July 28, 2020, 1:21 p.m. UTC | #1
On Mon, 27 Jul 2020 10:18:19 +0300
"Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote:

> From: Tzvetomir (VMware)  Stoyanov <tz.stoyanov@gmail.com>
> 
> 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

 s/onle/only/

> 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".

Reviewed-by: Steven Rostedt (VMware) <rostedt@godmis.org>

-- Steve

> 
> Signed-off-by: Tzvetomir (VMware)  Stoyanov <tz.stoyanov@gmail.com>
> ---
>  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;
>  	}
>
diff mbox series

Patch

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;
 	}