summaryrefslogtreecommitdiff
path: root/src/helper
diff options
context:
space:
mode:
authorntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-18 14:32:43 +0000
committerntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-18 14:32:43 +0000
commita92d27afb0733f6280088bd79b048cbd87a2a0c4 (patch)
treedde6a6285965d2d4f68de044c04d64c121496542 /src/helper
parentcf9646bda691ce39bd113383dc24c878de8d9c39 (diff)
downloadopenocd+libswd-a92d27afb0733f6280088bd79b048cbd87a2a0c4.tar.gz
openocd+libswd-a92d27afb0733f6280088bd79b048cbd87a2a0c4.tar.bz2
openocd+libswd-a92d27afb0733f6280088bd79b048cbd87a2a0c4.tar.xz
openocd+libswd-a92d27afb0733f6280088bd79b048cbd87a2a0c4.zip
- Added a "User:" debug level. These are messages that are intended for the user and are part of normal operation.
- Faster DEBUG/INFO() when they are disabled - target_read/write_buffer() now uses 16 and 32 bit access for single word aligned requests. Other requests are serviced as quickly as possible. - *much* faster read/write GDB packets, removing timeout problems. - GDB read/write packets w/single word aligned 32/16 bit access now use 32/16 bit word access. - working area can now be changed on the fly. Provides a way to move working area about as MMU is enabled/disabled. - cleaned up error messages for verify_image. Thanks Øyvind Harboe git-svn-id: svn://svn.berlios.de/openocd/trunk@302 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/helper')
-rw-r--r--src/helper/log.c7
-rw-r--r--src/helper/log.h17
2 files changed, 19 insertions, 5 deletions
diff --git a/src/helper/log.c b/src/helper/log.c
index 4cdcfc87..fe475130 100644
--- a/src/helper/log.c
+++ b/src/helper/log.c
@@ -43,12 +43,13 @@ void log_setCallback(logCallback c, void *p)
privData = p;
}
-static char *log_strings[4] =
+static char *log_strings[5] =
{
+ "User: ",
"Error: ",
"Warning:",
"Info: ",
- "Debug: ",
+ "Debug: "
};
void log_printf(enum log_levels level, const char *file, int line, const char *function, const char *format, ...)
@@ -68,7 +69,7 @@ void log_printf(enum log_levels level, const char *file, int line, const char *f
if (f != NULL)
file = f + 1;
- fprintf(log_output, "%s %d %ld %s:%d %s(): %s\n", log_strings[level], count, time(NULL), file, line, function, buffer);
+ fprintf(log_output, "%s %d %ld %s:%d %s(): %s\n", log_strings[level+1], count, time(NULL), file, line, function, buffer);
fflush(log_output);
va_end(args);
diff --git a/src/helper/log.h b/src/helper/log.h
index 09bc3a17..ab32760a 100644
--- a/src/helper/log.h
+++ b/src/helper/log.h
@@ -26,6 +26,9 @@
#include <stdarg.h>
/* logging priorities
+ * LOG_USER - user messages. Could be anything from information
+ * to progress messags. These messages do not represent
+ * incorrect or unexpected behaviour, just normal execution.
* LOG_ERROR - fatal errors, that are likely to cause program abort
* LOG_WARNING - non-fatal errors, that may be resolved later
* LOG_INFO - state information, etc.
@@ -33,6 +36,7 @@
*/
enum log_levels
{
+ LOG_USER = -1,
LOG_ERROR = 0,
LOG_WARNING = 1,
LOG_INFO = 2,
@@ -53,13 +57,16 @@ extern void log_setCallback(logCallback callback, void *priv);
extern int debug_level;
+/* Avoid fn call and building parameter list if we're not outputting the information.
+ * Matters on feeble CPUs for DEBUG/INFO statements that are involved frequently */
+
#define DEBUG(expr ...) \
- do { \
+ do { if (debug_level >= LOG_DEBUG) \
log_printf (LOG_DEBUG, __FILE__, __LINE__, __FUNCTION__, expr); \
} while(0)
#define INFO(expr ...) \
- do { \
+ do { if (debug_level >= LOG_INFO) \
log_printf (LOG_INFO, __FILE__, __LINE__, __FUNCTION__, expr); \
} while(0)
@@ -73,6 +80,12 @@ extern int debug_level;
log_printf (LOG_ERROR, __FILE__, __LINE__, __FUNCTION__, expr); \
} while(0)
+#define USER(expr ...) \
+ do { \
+ log_printf (LOG_USER, __FILE__, __LINE__, __FUNCTION__, expr); \
+ } while(0)
+
+
/* general failures
* error codes < 100
*/