From: Ian W. <del...@us...> - 2005-02-23 22:45:49
|
Update of /cvsroot/ipbench/ipbench2/src/tests/cpu_target_lukem In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19834 Modified Files: cpu_target_lukem.c Log Message: use a conditional variable to sleep on Index: cpu_target_lukem.c =================================================================== RCS file: /cvsroot/ipbench/ipbench2/src/tests/cpu_target_lukem/cpu_target_lukem.c,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** cpu_target_lukem.c 23 Feb 2005 05:56:13 -0000 1.9 --- cpu_target_lukem.c 23 Feb 2005 22:45:38 -0000 1.10 *************** *** 24,28 **** static int calc = 1; ! volatile static int running = 1; void *idle_thread(void *arg) --- 24,29 ---- static int calc = 1; ! static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; ! static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; void *idle_thread(void *arg) *************** *** 107,110 **** --- 108,114 ---- pthread_create(&ithr, NULL, idle_thread, NULL); + /* lock the mutex */ + pthread_mutex_lock(&mutex); + return 0; } *************** *** 113,121 **** cpu_target_lukem_start(struct timeval *start) { - int i; gettimeofday(start, NULL); dbprintf("Starting.\n"); ! while (running); ! sleep(1); dbprintf("Complete.\n"); return 0; --- 117,126 ---- cpu_target_lukem_start(struct timeval *start) { gettimeofday(start, NULL); dbprintf("Starting.\n"); ! ! /* wait on the conditional */ ! pthread_cond_wait(&cond, &mutex); ! dbprintf("Complete.\n"); return 0; *************** *** 127,131 **** gettimeofday(stop, NULL); calc = 0; ! running = 0; dbprintf("Stopping.\n"); return 0; --- 132,136 ---- gettimeofday(stop, NULL); calc = 0; ! pthread_cond_signal(&cond); dbprintf("Stopping.\n"); return 0; |