X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=main.c;h=8fe35a726828411933158b1cdc3cc15f1291aa14;hp=09d6a6ff632fca6d7da870ea9db3cc1aa934004d;hb=1bfbfbf903777d13df3107fbc89bdaeb2af9f2d6;hpb=83477c7faf66a160530f5a01c1bf3016e2127a4d diff --git a/main.c b/main.c index 09d6a6f..8fe35a7 100644 --- a/main.c +++ b/main.c @@ -9,21 +9,6 @@ ** ** \*****************************************************************************/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "main.h" MESSAGES @@ -41,7 +26,11 @@ struct timezone now_tz; now_tm = localtime(&now); \ } +#ifdef SOCKET_MISDN +FILE *debug_fp = NULL; +#else int global_debug = 0; +#endif int quit=0; #if 0 @@ -51,6 +40,7 @@ struct lcr_fdset lcr_fdset[FD_SETSIZE]; pthread_mutex_t mutexd; // debug output mutex //pthread_mutex_t mutext; // trace output mutex pthread_mutex_t mutexe; // error output mutex +pthread_mutex_t mutex_lcr; // lcr process mutex int memuse = 0; int mmemuse = 0; @@ -82,8 +72,13 @@ void debug(const char *function, int line, char *prefix, char *buffer) last_debug = debug_count; if (!nooutput) printf("\033[34m--------------------- %04d.%02d.%02d %02d:%02d:%02d %06d\033[36m\n", now_tm->tm_year+1900, now_tm->tm_mon+1, now_tm->tm_mday, now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec, debug_count%1000000); +#ifdef SOCKET_MISDN + if (debug_fp) + fprintf(debug_fp, "--------------------- %04d.%02d.%02d %02d:%02d:%02d %06d\n", now_tm->tm_year+1900, now_tm->tm_mon+1, now_tm->tm_mday, now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec, debug_count%1000000); +#else if (options.deb&DEBUG_LOG && global_debug) dprint(DBGM_MAN, 0, "--------------------- %04d.%02d.%02d %02d:%02d:%02d %06d\n", now_tm->tm_year+1900, now_tm->tm_mon+1, now_tm->tm_mday, now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec, debug_count%1000000); +#endif } if (!nooutput) @@ -96,14 +91,26 @@ void debug(const char *function, int line, char *prefix, char *buffer) printf("%s", buffer); } +#ifdef SOCKET_MISDN + if (debug_fp) +#else if (options.deb&DEBUG_LOG && global_debug) +#endif { if (debug_newline) { if (function) +#ifdef SOCKET_MISDN + fprintf(debug_fp, "%s%s(in %s() line %d): %s", prefix?prefix:"", prefix?" ":"", function, line, buffer); +#else dprint(DBGM_MAN, 0, "%s%s(in %s() line %d): %s", prefix?prefix:"", prefix?" ":"", function, line, buffer); +#endif else +#ifdef SOCKET_MISDN + fprintf(debug_fp, "%s%s: %s", prefix?prefix:"", prefix?" ":"", buffer); +#else dprint(DBGM_MAN, 0, "%s%s: %s", prefix?prefix:"", prefix?" ":"", buffer); +#endif } } @@ -209,6 +216,9 @@ int main(int argc, char *argv[]) memset(lcr_fdset, 0, sizeof(lcr_fdset)); #endif + /* lock LCR process */ + pthread_mutex_lock(&mutex_lcr); + /* current time */ GET_NOW(); @@ -463,6 +473,7 @@ int main(int argc, char *argv[]) quit = 0; while(!quit) { + last_d = now_d; GET_NOW(); if (now_d-last_d > 1.0) @@ -637,7 +648,9 @@ BUDETECT /* did we do nothing? so we wait to give time to other processes */ if (all_idle) { + pthread_mutex_unlock(&mutex_lcr); // unlock LCR debug_usleep(4000, __FILE__, __LINE__, now_tm->tm_hour, now_tm->tm_min, now_tm->tm_sec); + pthread_mutex_lock(&mutex_lcr); // lock LCR idletime += 4000; } } @@ -739,7 +752,6 @@ free: /* deinitialize mISDN */ mISDN_deinitialize(); - global_debug = 0; /* display memory leak */ #define MEMCHECK(a, b) \ @@ -765,6 +777,9 @@ free: MEMCHECK("file descriptor(s) left",fduse) MEMCHECK("file handler(s) left",fhuse) + /* unlock LCR process */ + pthread_mutex_unlock(&mutex_lcr); + /* take me out */ return(ret); }