diff -r d1083f580ca1 -r 6a7ff66a811d targets/Linux/plc_Linux_main.c --- a/targets/Linux/plc_Linux_main.c Mon Sep 21 11:56:55 2009 +0200 +++ b/targets/Linux/plc_Linux_main.c Mon Sep 21 12:00:52 2009 +0200 @@ -64,7 +64,7 @@ } -static int __debug_tick; +static unsigned long __debug_tick; static pthread_mutex_t python_wait_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t python_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -75,8 +75,8 @@ int startPLC(int argc,char **argv) { struct sigevent sigev; - /* Translate PLC's microseconds to Ttick nanoseconds */ - Ttick = 1000000 * maxval(common_ticktime__,1); + /* Define Ttick to 1ms if common_ticktime not defined */ + Ttick = common_ticktime__?common_ticktime__:1000000; memset (&sigev, 0, sizeof (struct sigevent)); sigev.sigev_value.sival_int = 0; @@ -97,6 +97,8 @@ /* install signal handler for manual break */ // signal(SIGTERM, catch_signal); signal(SIGINT, catch_signal); + + pthread_mutex_trylock(&debug_mutex); }else{ return 1; } @@ -120,6 +122,7 @@ timer_delete (PLC_timer); __cleanup(); __debug_tick = -1; + pthread_mutex_unlock(&debug_mutex); pthread_mutex_unlock(&debug_wait_mutex); pthread_mutex_destroy(&debug_wait_mutex); pthread_mutex_unlock(&python_wait_mutex); @@ -127,9 +130,9 @@ return 0; } -extern int __tick; +extern unsigned long __tick; /* from plc_debugger.c */ -int WaitDebugData() +unsigned long WaitDebugData() { /* Wait signal from PLC thread */ if(pthread_mutex_lock(&debug_wait_mutex)) return -1;