X-Git-Url: http://git.eversberg.eu/gitweb.cgi?p=lcr.git;a=blobdiff_plain;f=main.c;h=8fe35a726828411933158b1cdc3cc15f1291aa14;hp=24c0039e8cde517b0ee56a50d47fcfe48301fe2a;hb=258c2e57a441f1fd8ed779bb2d88992aba3c1e65;hpb=d9d954e58d6acf8c3de95402110e691f0bc29688 diff --git a/main.c b/main.c index 24c0039..8fe35a7 100644 --- 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); }