work on socket
[lcr.git] / main.c
diff --git a/main.c b/main.c
index 24c0039..8fe35a7 100644 (file)
--- a/main.c
+++ b/main.c
@@ -40,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;
@@ -215,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();
 
@@ -469,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)
@@ -643,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;
                }
        }
@@ -770,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);
 }