aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYordan Karadzhov <ykaradzhov@vmware.com>2019-02-13 18:12:13 +0200
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2019-02-13 14:54:23 -0500
commit5635625445f974bb852473aa56f4c0fae297c9f8 (patch)
treead92beff2408cbfc0ed160314f5bf8e95e8b1413
parent364f1f232249e2022b1a232b33de4d231bc62ba6 (diff)
downloadtrace-cmd-5635625445f974bb852473aa56f4c0fae297c9f8.tar.gz
kernel-shark: Make the time labels of the marker more readable
The precision of the displayed time of the two markers is set to 1 microsecond (as in the table). In the same time the precision of the time difference (Delta) is now 1 nanosecond, because we expect that the user do not care that much about the absolute time of the event, but may want to measure the interval between two events with the highest possible precision. The displayed time is formatted (spaces added) in a way that aims to make it easy to read the milliseconds and the microseconds. Link: http://lore.kernel.org/linux-trace-devel/20190213161216.14438-6-ykaradzhov@vmware.com Signed-off-by: Yordan Karadzhov <ykaradzhov@vmware.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r--kernel-shark/src/KsDualMarker.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/kernel-shark/src/KsDualMarker.cpp b/kernel-shark/src/KsDualMarker.cpp
index 43bc1774..5dcbaaea 100644
--- a/kernel-shark/src/KsDualMarker.cpp
+++ b/kernel-shark/src/KsDualMarker.cpp
@@ -329,29 +329,39 @@ void KsDualMarkerSM::updateMarkers(const KsDataStore &data,
*/
void KsDualMarkerSM::updateLabels()
{
- QString mark, delta;
+ char separator(' ');
+ int precision(6); // 1 microsecond precision.
+
+ auto lamSetTimeLabel = [&precision, &separator] (QLabel &l, int64_t t) {
+ QString time = KsUtils::Ts2String(t, precision);
+ int i = time.indexOf('.') + 4;
+
+ /* Insert separators for milliseconds amd microseconds. */
+ while (i < time.size()) {
+ time.insert(i, separator);
+ i = i + 4;
+ }
+
+ l.setText(time);
+ };
// Marker A
- if (_markA._isSet) {
- mark = KsUtils::Ts2String(_markA._ts, 7);
- _labelMA.setText(mark);
- } else {
- _labelMA.setText("");
- }
+ if (_markA._isSet)
+ lamSetTimeLabel(_labelMA, _markA._ts);
+ else
+ _labelMA.clear();
// Marker B
- if (_markB._isSet) {
- mark = KsUtils::Ts2String(_markB._ts, 7);
- _labelMB.setText(mark);
- } else {
- _labelMB.setText("");
- }
+ if (_markB._isSet)
+ lamSetTimeLabel(_labelMB, _markB._ts);
+ else
+ _labelMB.clear();
// Delta
if (_markA._isSet && _markB._isSet) {
- delta = KsUtils::Ts2String(_markB._ts - _markA._ts, 7);
- _labelDelta.setText(delta);
+ precision = 9; // 1 nanoseconds precision.
+ lamSetTimeLabel(_labelDelta, _markB._ts - _markA._ts);
} else {
- _labelDelta.setText("");
+ _labelDelta.clear();
}
}