mdebug

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 4a34d8ea3153622a953355813c0c79593ffd2331
parent 3491cb2bfc76504d2fe3c6ee2cb30528d4589c92
Author: Brian Swetland <swetland@frotz.net>
Date:   Sun, 21 Jun 2015 02:42:22 -0700

debugger: avoid excessive chatter when errors persist

Diffstat:
Mtools/debugger-core.c | 7+++++--
Mtools/rswdp.c | 9+++++----
Mtools/rswdp.h | 1+
3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/tools/debugger-core.c b/tools/debugger-core.c @@ -92,14 +92,17 @@ void debugger_lock() { } void debugger_unlock() { + if (swdp_error()) { + xprintf("SWD ERROR\n"); + } pthread_mutex_unlock(&_dbg_lock); } void *debugger_monitor(void *arg) { for (;;) { - debugger_lock(); + pthread_mutex_lock(&_dbg_lock); monitor(); - debugger_unlock(); + pthread_mutex_unlock(&_dbg_lock); usleep(250000); } } diff --git a/tools/rswdp.c b/tools/rswdp.c @@ -39,6 +39,10 @@ static usb_handle *usb; static int swd_error = 0; +int swdp_error(void) { + return swd_error; +} + #define MAXWORDS 512 struct txn { @@ -113,10 +117,7 @@ static int process_reply(struct txn *t, u32 *data, int count) { continue; case CMD_STATUS: if (op) { - if (swd_error == 0) { - swd_error = -op; - fprintf(stderr, "SWD ERROR\n"); - } + swd_error = -op; return -op; } else { return 0; diff --git a/tools/rswdp.h b/tools/rswdp.h @@ -49,6 +49,7 @@ int swdp_watchpoint_rw(unsigned n, u32 addr); /* attempt to clear any error state from previous transactions */ /* return 0 if successful (or no error state existed) */ int swdp_clear_error(void); +int swdp_error(void); int swdp_reset(void);