X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=common-src%2Fevent.c;h=0959c721ebb47c58d9b8ce4ffc9e91dbeac99871;hb=d3b2175e084f88c8736ad7073eacbf4670147aec;hp=94ae1ac7aeb0efe946972c46b0235bfdde22833c;hpb=34197d9f46a5f4e944378cbb65fca32ee0eec7b9;p=debian%2Famanda diff --git a/common-src/event.c b/common-src/event.c index 94ae1ac..0959c72 100644 --- a/common-src/event.c +++ b/common-src/event.c @@ -24,24 +24,23 @@ * 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 */