[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 3/3] trace: Example of "centralized" recorder tracing
|
From: |
Christophe de Dinechin |
|
Subject: |
[PATCH v2 3/3] trace: Example of "centralized" recorder tracing |
|
Date: |
Fri, 26 Jun 2020 18:27:06 +0200 |
This is an example showing how the recorder can be used to have one
"topic" covering multiple entries. Here, the topic is "lock".
Here are a few use cases:
- Checking locks:
RECORDER_TRACES=lock qemu
- Graphic visualization of locks:
RECORDER_TRACES="lock=state,id" qemu &
recorder_scope state
<Hit the 't' key to toggle timing display>
<Hit the 'c' key to dump the screen data as CSV>
cat recorder_scope_data-1.csv
Signed-off-by: Christophe de Dinechin <dinechin@redhat.com>
---
util/qemu-thread-common.h | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/util/qemu-thread-common.h b/util/qemu-thread-common.h
index 2af6b12085..0de07a471f 100644
--- a/util/qemu-thread-common.h
+++ b/util/qemu-thread-common.h
@@ -15,6 +15,9 @@
#include "qemu/thread.h"
#include "trace.h"
+#include "trace/recorder.h"
+
+RECORDER_DEFINE(lock, 16, "Lock state");
static inline void qemu_mutex_post_init(QemuMutex *mutex)
{
@@ -23,12 +26,14 @@ static inline void qemu_mutex_post_init(QemuMutex *mutex)
mutex->line = 0;
#endif
mutex->initialized = true;
+ record(lock, "Init state %d for %p", -1, mutex);
}
static inline void qemu_mutex_pre_lock(QemuMutex *mutex,
const char *file, int line)
{
trace_qemu_mutex_lock(mutex, file, line);
+ record(lock, "Locking state %d for %p", 1, mutex);
}
static inline void qemu_mutex_post_lock(QemuMutex *mutex,
@@ -39,6 +44,7 @@ static inline void qemu_mutex_post_lock(QemuMutex *mutex,
mutex->line = line;
#endif
trace_qemu_mutex_locked(mutex, file, line);
+ record(lock, "Locked state %d for %p", 2, mutex);
}
static inline void qemu_mutex_pre_unlock(QemuMutex *mutex,
@@ -49,6 +55,7 @@ static inline void qemu_mutex_pre_unlock(QemuMutex *mutex,
mutex->line = 0;
#endif
trace_qemu_mutex_unlock(mutex, file, line);
+ record(lock, "Unkocked state %d for %p", 0, mutex);
}
#endif
--
2.26.2