Author: Nicolas Pitre <nico@cam.org>
[fw/openocd] / src / helper / log.c
index 8eea1ac0a8e1f540eb5deba02f95b60aa02e3f79..549d71279d9a8f38b226f39ff796920f545a21dc 100644 (file)
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
 #include "log.h"
-#include "configuration.h"
 #include "time_support.h"
-#include "command.h"
+// @todo the inclusion of server.h here is a layering violation
 #include "server.h"
 
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
 #include <stdarg.h>
 
-#define PRINT_MEM() 0
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
+#ifdef HAVE_MALLOC_H
 #include <malloc.h>
+#else
+#error "malloc.h is required to use --enable-malloc-logging"
+#endif
 #endif
 
 int debug_level = -1;
@@ -99,16 +95,16 @@ static void log_puts(enum log_levels level, const char *file, int line, const ch
                {
                        /* print with count and time information */
                        int t=(int)(timeval_ms()-start);
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
                        struct mallinfo info;
                        info = mallinfo();
 #endif
                        fprintf(log_output, "%s%d %d %s:%d %s()"
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
                                        " %d"
 #endif
                                        ": %s", log_strings[level+1], count, t, file, line, function,
-#if PRINT_MEM()
+#ifdef _DEBUG_FREE_SPACE_
                                        info.fordblks,
 #endif
                                        string);
@@ -389,7 +385,19 @@ void keep_alive()
        current_time=timeval_ms();
        if (current_time-last_time>1000)
        {
-               LOG_WARNING("BUG: keep_alive() was not invoked in the 1000ms timelimit. GDB alive packet not sent! (%lld)", current_time-last_time);
+               extern int gdb_actual_connections;
+
+               if (gdb_actual_connections)
+                       LOG_WARNING("keep_alive() was not invoked in the "
+                               "1000ms timelimit. GDB alive packet not "
+                               "sent! (%lld). Workaround: increase "
+                               "\"set remotetimeout\" in GDB",
+                               current_time-last_time);
+               else
+                       LOG_DEBUG("keep_alive() was not invoked in the "
+                               "1000ms timelimit (%lld). This may cause "
+                               "trouble with GDB connections.",
+                               current_time-last_time);
        }
        if (current_time-last_time>500)
        {