cyclictest: cannot stop running with '-M' option
Most of time having '-M' option causes cyclictest won't exit after a duration ('-D') expires, like this quick command on my machines: sudo cyclictest -S -M -D2 -d0 This is because the main thread is blocked on waiting for the next update of MAX, but the timer thread doesn't signal the main thread before it quits. Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com> Signed-off-by: John Kacur <jkacur@redhat.com>
This commit is contained in:
parent
193ed3d12e
commit
470b7394e6
|
@ -1241,6 +1241,17 @@ static void *timerthread(void *param)
|
|||
}
|
||||
|
||||
out:
|
||||
if (refresh_on_max) {
|
||||
pthread_mutex_lock(&refresh_on_max_lock);
|
||||
/* We could reach here with both shutdown and allstopped unset (0).
|
||||
* Set shutdown with synchronization to notify the main
|
||||
* thread not to be blocked when it should exit.
|
||||
*/
|
||||
shutdown++;
|
||||
pthread_cond_signal(&refresh_on_max_cond);
|
||||
pthread_mutex_unlock(&refresh_on_max_lock);
|
||||
}
|
||||
|
||||
if (par->mode == MODE_CYCLIC)
|
||||
timer_delete(timer);
|
||||
|
||||
|
@ -2516,8 +2527,9 @@ int main(int argc, char **argv)
|
|||
|
||||
if (refresh_on_max) {
|
||||
pthread_mutex_lock(&refresh_on_max_lock);
|
||||
pthread_cond_wait(&refresh_on_max_cond,
|
||||
&refresh_on_max_lock);
|
||||
if (!shutdown)
|
||||
pthread_cond_wait(&refresh_on_max_cond,
|
||||
&refresh_on_max_lock);
|
||||
pthread_mutex_unlock(&refresh_on_max_lock);
|
||||
}
|
||||
}
|
||||
|
@ -2527,6 +2539,9 @@ int main(int argc, char **argv)
|
|||
shutdown = 1;
|
||||
usleep(50000);
|
||||
|
||||
if (!verbose && !quiet && refresh_on_max)
|
||||
printf("\033[%dB", num_threads + 2);
|
||||
|
||||
if (quiet)
|
||||
quiet = 2;
|
||||
for (i = 0; i < num_threads; i++) {
|
||||
|
|
Loading…
Reference in New Issue