Commit eb4f8e10 authored by Alex Bennée's avatar Alex Bennée
Browse files

tests: use g_usleep instead of rem = sleep(time)



Relying on sleep to always return having slept isn't safe as a signal
may have occurred. If signals are constantly incoming the program will
never reach its termination condition. This is believed to be the
mechanism causing time outs for qht-test in Travis.

The glib g_usleep() deals with all of this for us so lets use it instead.

Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent d406015b
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -74,16 +74,14 @@ static void *thread_func(void *arg)

static void run_test(void)
{
    unsigned int remaining;
    unsigned int i;

    while (atomic_read(&n_ready_threads) != n_threads) {
        cpu_relax();
    }

    atomic_set(&test_start, true);
    do {
        remaining = sleep(duration);
    } while (remaining);
    g_usleep(duration * G_USEC_PER_SEC);
    atomic_set(&test_stop, true);

    for (i = 0; i < n_threads; i++) {
+2 −4
Original line number Diff line number Diff line
@@ -76,16 +76,14 @@ static void *thread_func(void *arg)

static void run_test(void)
{
    unsigned int remaining;
    unsigned int i;

    while (atomic_read(&n_ready_threads) != n_threads) {
        cpu_relax();
    }

    atomic_set(&test_start, true);
    do {
        remaining = sleep(duration);
    } while (remaining);
    g_usleep(duration * G_USEC_PER_SEC);
    atomic_set(&test_stop, true);

    for (i = 0; i < n_threads; i++) {
+2 −4
Original line number Diff line number Diff line
@@ -398,16 +398,14 @@ static void pr_stats(void)

static void run_test(void)
{
    unsigned int remaining;
    int i;

    while (atomic_read(&n_ready_threads) != n_rw_threads + n_rz_threads) {
        cpu_relax();
    }

    atomic_set(&test_start, true);
    do {
        remaining = sleep(duration);
    } while (remaining);
    g_usleep(duration * G_USEC_PER_SEC);
    atomic_set(&test_stop, true);

    for (i = 0; i < n_rw_threads; i++) {