Imported Upstream version 2.5.2p1
[debian/amanda] / common-src / event.c
index 94ae1ac7aeb0efe946972c46b0235bfdde22833c..0959c721ebb47c58d9b8ce4ffc9e91dbeac99871 100644 (file)
  * file named AUTHORS, in the root directory of this distribution.
  */
 /*
- * $Id: event.c,v 1.24.2.1 2006/12/12 14:56:38 martinea Exp $
+ * $Id: event.c,v 1.24 2006/06/16 10:55:05 martinea Exp $
  *
  * Event handler.  Serializes different kinds of events to allow for
  * a uniform interface, central state storage, and centralized
  * interdependency logic.
  */
 
-/*#define      EVENT_DEBUG*/
-
-#ifdef EVENT_DEBUG
-#define eventprintf(x)    dbprintf(x)
-#else
-#define eventprintf(x)
-#endif
-
 #include "amanda.h"
 #include "event.h"
 #include "queue.h"
+#include "conffile.h"
+
+#define event_debug(i,x) do {                          \
+       if ((i) <= debug_event) {       \
+           dbprintf(x);                                \
+       }                                               \
+} while (0)
 
 /*
  * The opaque handle passed back to the caller.  This is typedefed to
@@ -89,9 +88,7 @@ static struct sigtabent {
     void (*oldhandler)(int);/* old handler (for unsetting) */
 } sigtable[NSIG];
 
-#ifdef EVENT_DEBUG
 static const char *event_type2str(event_type_t);
-#endif
 #define        fire(eh)        (*(eh)->fn)((eh)->arg)
 static void signal_handler(int);
 static event_handle_t *gethandle(void);
@@ -143,9 +140,9 @@ event_register(
     eventq_add(eventq, handle);
     eventq.qlength++;
 
-    eventprintf(("%s: event: register: %p->data=%lu, type=%s\n",
-               debug_prefix_time(NULL), handle, handle->data,
-               event_type2str(handle->type)));
+    event_debug(1, ("%s: event: register: %p->data=%lu, type=%s\n",
+                   debug_prefix_time(NULL), handle, handle->data,
+                   event_type2str(handle->type)));
     return (handle);
 }
 
@@ -161,9 +158,9 @@ event_release(
 
     assert(handle != NULL);
 
-    eventprintf(("%s: event: release (mark): %p data=%lu, type=%s\n",
-                debug_prefix_time(NULL), handle, handle->data,
-                event_type2str(handle->type)));
+    event_debug(1, ("%s: event: release (mark): %p data=%lu, type=%s\n",
+                   debug_prefix_time(NULL), handle, handle->data,
+                   event_type2str(handle->type)));
     assert(handle->type != EV_DEAD);
 
     /*
@@ -201,14 +198,14 @@ event_wakeup(
     event_handle_t *eh;
     int nwaken = 0;
 
-    eventprintf(("%s: event: wakeup: enter (%lu)\n",
-                debug_prefix_time(NULL), id));
+    event_debug(1, ("%s: event: wakeup: enter (%lu)\n",
+                   debug_prefix_time(NULL), id));
 
     for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
 
        if (eh->type == EV_WAIT && eh->data == id) {
-           eventprintf(("%s: event: wakeup: %p id=%lu\n",
-                        debug_prefix_time(NULL), eh, id));
+           event_debug(1, ("%s: event: wakeup: %p id=%lu\n",
+                           debug_prefix_time(NULL), eh, id));
            fire(eh);
            nwaken++;
        }
@@ -251,7 +248,7 @@ event_loop_wait(
 #ifdef ASSERTIONS
     static int entry = 0;
 #endif
-    fd_set readfds, writefds, errfds, werrfds;
+    SELECT_ARG_TYPE readfds, writefds, errfds, werrfds;
     struct timeval timeout, *tvptr;
     int ntries, maxfd, rc;
     long interval;
@@ -261,9 +258,9 @@ event_loop_wait(
     int event_wait_fired = 0;
     int see_event;
 
-    eventprintf(("%s: event: loop: enter: dontblock=%d, qlength=%d, eh=%p\n",
-                debug_prefix_time(NULL),
-                dontblock, eventq.qlength, wait_eh));
+    event_debug(1, ("%s: event: loop: enter: dontblock=%d, qlength=%d, eh=%p\n",
+                   debug_prefix_time(NULL),
+                   dontblock, eventq.qlength, wait_eh));
 
     /*
      * If we have no events, we have nothing to do
@@ -285,17 +282,17 @@ event_loop_wait(
     curtime = time(NULL);
 
     do {
-#ifdef EVENT_DEBUG
-       eventprintf(("%s: event: loop: dontblock=%d, qlength=%d eh=%p\n",
-                    debug_prefix_time(NULL), dontblock, eventq.qlength,
-                    wait_eh));
-       for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
-           eventprintf(("%s: %p): %s data=%lu fn=%p arg=%p\n",
-                        debug_prefix_time(NULL), eh,
-                        event_type2str(eh->type), eh->data, eh->fn,
-                        eh->arg));
+       if (debug_event >= 1) {
+           event_debug(1, ("%s: event: loop: dontblock=%d, qlength=%d eh=%p\n",
+                           debug_prefix_time(NULL), dontblock, eventq.qlength,
+                           wait_eh));
+           for (eh = eventq_first(eventq); eh != NULL; eh = eventq_next(eh)) {
+               event_debug(1, ("%s: %p): %s data=%lu fn=%p arg=%p\n",
+                               debug_prefix_time(NULL), eh,
+                               event_type2str(eh->type), eh->data, eh->fn,
+                               eh->arg));
+           }
        }
-#endif
        /*
         * Set ourselves up with no timeout initially.
         */
@@ -429,13 +426,13 @@ event_loop_wait(
        /*
         * Let 'er rip
         */
-       eventprintf((
-                   "%s: event: select: dontblock=%d, maxfd=%d, timeout=%ld\n",
-                   debug_prefix_time(NULL), dontblock, maxfd,
-                   tvptr != NULL ? timeout.tv_sec : -1));
+       event_debug(1,
+                   ("%s: event: select: dontblock=%d, maxfd=%d, timeout=%ld\n",
+                    debug_prefix_time(NULL), dontblock, maxfd,
+                    tvptr != NULL ? timeout.tv_sec : -1));
        rc = select(maxfd + 1, &readfds, &writefds, &errfds, tvptr);
-       eventprintf(("%s: event: select returns %d\n",
-                    debug_prefix_time(NULL), rc));
+       event_debug(1, ("%s: event: select returns %d\n",
+                       debug_prefix_time(NULL), rc));
 
        /*
         * Select errors can mean many things.  Interrupted events should
@@ -601,7 +598,6 @@ puthandle(
     cache.qlength++;
 }
 
-#ifdef EVENT_DEBUG
 /*
  * Convert an event type into a string
  */
@@ -629,4 +625,3 @@ event_type2str(
            return (event_types[i].name);
     return ("BOGUS EVENT TYPE");
 }
-#endif /* EVENT_DEBUG */