qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 03/11] sdbus: add trace events


From: Philippe Mathieu-Daudé
Subject: [Qemu-devel] [PATCH 03/11] sdbus: add trace events
Date: Wed, 13 Dec 2017 17:44:28 -0300

Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
 hw/sd/core.c       | 25 +++++++++++++++++++++----
 hw/sd/trace-events |  6 ++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/hw/sd/core.c b/hw/sd/core.c
index bd9350d21c..eda595973b 100644
--- a/hw/sd/core.c
+++ b/hw/sd/core.c
@@ -21,7 +21,14 @@
 
 #include "qemu/osdep.h"
 #include "hw/sd/sd.h"
+#include "qemu/cutils.h"
 #include "sd-internal.h"
+#include "trace.h"
+
+static inline const char *sdbus_name(SDBus *sdbus)
+{
+    return sdbus->qbus.name;
+}
 
 static SDState *get_card(SDBus *sdbus)
 {
@@ -37,20 +44,28 @@ static SDState *get_card(SDBus *sdbus)
 int sdbus_do_command(SDBus *sdbus, SDRequest *req, uint8_t *response)
 {
     SDState *card = get_card(sdbus);
+    int sz = 0;
+    char *hexbuf;
 
+    trace_sdbus_command(sdbus_name(sdbus), req->cmd, req->arg, req->crc);
     if (card) {
         SDCardClass *sc = SD_CARD_GET_CLASS(card);
 
-        return sc->do_command(card, req, response);
+        sz = sc->do_command(card, req, response);
+        hexbuf = qemu_hexbuf_strdup(response, sz, NULL, "resp: ");
+        trace_sdbus_command_response(sdbus_name(sdbus),
+                                     req->cmd, req->arg, hexbuf);
+        g_free(hexbuf);
     }
 
-    return 0;
+    return sz;
 }
 
 void sdbus_write_data(SDBus *sdbus, uint8_t value)
 {
     SDState *card = get_card(sdbus);
 
+    trace_sdbus_write(sdbus_name(sdbus), value);
     if (card) {
         SDCardClass *sc = SD_CARD_GET_CLASS(card);
 
@@ -61,14 +76,16 @@ void sdbus_write_data(SDBus *sdbus, uint8_t value)
 uint8_t sdbus_read_data(SDBus *sdbus)
 {
     SDState *card = get_card(sdbus);
+    uint8_t value = 0;
 
     if (card) {
         SDCardClass *sc = SD_CARD_GET_CLASS(card);
 
-        return sc->read_data(card);
+        value = sc->read_data(card);
     }
+    trace_sdbus_read(sdbus_name(sdbus), value);
 
-    return 0;
+    return value;
 }
 
 bool sdbus_data_ready(SDBus *sdbus)
diff --git a/hw/sd/trace-events b/hw/sd/trace-events
index 11f8fa4fc1..6b1dc7380f 100644
--- a/hw/sd/trace-events
+++ b/hw/sd/trace-events
@@ -1,5 +1,11 @@
 # See docs/devel/tracing.txt for syntax documentation.
 
+# hw/sd/core.c
+sdbus_command(const char *bus_name, uint8_t cmd, uint32_t arg, uint8_t crc) 
"@%s CMD%02d arg 0x%08x crc 0x%02x"
+sdbus_command_response(const char *bus_name, uint8_t cmd, uint32_t arg, const 
char *hexdump) "@%s CMD%02d arg 0x%08x %s"
+sdbus_read(const char *bus_name, uint8_t value) "@%s value 0x%02x"
+sdbus_write(const char *bus_name, uint8_t value) "@%s value 0x%02x"
+
 # hw/sd/sdhci.c
 sdhci_set_inserted(const char *level) "card state changed: %s"
 sdhci_send_command(uint8_t cmd, uint32_t arg) "sending CMD%02u ARG[0x%08x]"
-- 
2.15.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]