To reduce the boilerplate code, refactor futex_requeue_pi_signal_restart
test to use kselftest_harness header instead of futex's logging header.

Signed-off-by: André Almeida <andrealm...@igalia.com>
---
 .../functional/futex_requeue_pi_signal_restart.c   | 129 ++++++---------------
 tools/testing/selftests/futex/functional/run.sh    |   2 +-
 2 files changed, 38 insertions(+), 93 deletions(-)

diff --git 
a/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c 
b/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
index 
c6b8f32990c87587551b14577b200e62c56af223..e34ee0f9ebccdb2cd2984e48acf157245b12848f
 100644
--- a/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
+++ b/tools/testing/selftests/futex/functional/futex_requeue_pi_signal_restart.c
@@ -24,11 +24,11 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
 #include "atomic.h"
 #include "futextest.h"
-#include "logging.h"
+#include "../../kselftest_harness.h"
 
-#define TEST_NAME "futex-requeue-pi-signal-restart"
 #define DELAY_US 100
 
 futex_t f1 = FUTEX_INITIALIZER;
@@ -37,15 +37,6 @@ atomic_t requeued = ATOMIC_INITIALIZER;
 
 int waiter_ret = 0;
 
-void usage(char *prog)
-{
-       printf("Usage: %s\n", prog);
-       printf("  -c    Use color\n");
-       printf("  -h    Display this help message\n");
-       printf("  -v L  Verbosity level: %d=QUIET %d=CRITICAL %d=INFO\n",
-              VQUIET, VCRITICAL, VINFO);
-}
-
 int create_rt_thread(pthread_t *pth, void*(*func)(void *), void *arg,
                     int policy, int prio)
 {
@@ -57,35 +48,28 @@ int create_rt_thread(pthread_t *pth, void*(*func)(void *), 
void *arg,
        memset(&schedp, 0, sizeof(schedp));
 
        ret = pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED);
-       if (ret) {
-               error("pthread_attr_setinheritsched\n", ret);
-               return -1;
-       }
+       if (ret)
+               ksft_exit_fail_msg("pthread_attr_setinheritsched\n");
 
        ret = pthread_attr_setschedpolicy(&attr, policy);
-       if (ret) {
-               error("pthread_attr_setschedpolicy\n", ret);
-               return -1;
-       }
+       if (ret)
+               ksft_exit_fail_msg("pthread_attr_setschedpolicy\n");
 
        schedp.sched_priority = prio;
        ret = pthread_attr_setschedparam(&attr, &schedp);
-       if (ret) {
-               error("pthread_attr_setschedparam\n", ret);
-               return -1;
-       }
+       if (ret)
+               ksft_exit_fail_msg("pthread_attr_setschedparam\n");
 
        ret = pthread_create(pth, &attr, func, arg);
-       if (ret) {
-               error("pthread_create\n", ret);
-               return -1;
-       }
+       if (ret)
+               ksft_exit_fail_msg("pthread_create\n");
+
        return 0;
 }
 
 void handle_signal(int signo)
 {
-       info("signal received %s requeue\n",
+       ksft_print_dbg_msg("signal received %s requeue\n",
             requeued.val ? "after" : "prior to");
 }
 
@@ -94,78 +78,46 @@ void *waiterfn(void *arg)
        unsigned int old_val;
        int res;
 
-       waiter_ret = RET_PASS;
-
-       info("Waiter running\n");
-       info("Calling FUTEX_LOCK_PI on f2=%x @ %p\n", f2, &f2);
+       ksft_print_dbg_msg("Waiter running\n");
+       ksft_print_dbg_msg("Calling FUTEX_LOCK_PI on f2=%x @ %p\n", f2, &f2);
        old_val = f1;
        res = futex_wait_requeue_pi(&f1, old_val, &(f2), NULL,
                                    FUTEX_PRIVATE_FLAG);
        if (!requeued.val || errno != EWOULDBLOCK) {
-               fail("unexpected return from futex_wait_requeue_pi: %d (%s)\n",
+               ksft_test_result_fail("unexpected return from 
futex_wait_requeue_pi: %d (%s)\n",
                     res, strerror(errno));
-               info("w2:futex: %x\n", f2);
+               ksft_print_dbg_msg("w2:futex: %x\n", f2);
                if (!res)
                        futex_unlock_pi(&f2, FUTEX_PRIVATE_FLAG);
-               waiter_ret = RET_FAIL;
        }
 
-       info("Waiter exiting with %d\n", waiter_ret);
        pthread_exit(NULL);
 }
 
 
-int main(int argc, char *argv[])
+TEST(futex_requeue_pi_signal_restart)
 {
        unsigned int old_val;
        struct sigaction sa;
        pthread_t waiter;
-       int c, res, ret = RET_PASS;
-
-       while ((c = getopt(argc, argv, "chv:")) != -1) {
-               switch (c) {
-               case 'c':
-                       log_color(1);
-                       break;
-               case 'h':
-                       usage(basename(argv[0]));
-                       exit(0);
-               case 'v':
-                       log_verbosity(atoi(optarg));
-                       break;
-               default:
-                       usage(basename(argv[0]));
-                       exit(1);
-               }
-       }
-
-       ksft_print_header();
-       ksft_set_plan(1);
-       ksft_print_msg("%s: Test signal handling during requeue_pi\n",
-              basename(argv[0]));
-       ksft_print_msg("\tArguments: <none>\n");
+       int res;
 
        sa.sa_handler = handle_signal;
        sigemptyset(&sa.sa_mask);
        sa.sa_flags = 0;
-       if (sigaction(SIGUSR1, &sa, NULL)) {
-               error("sigaction\n", errno);
-               exit(1);
-       }
+       if (sigaction(SIGUSR1, &sa, NULL))
+               ksft_exit_fail_msg("sigaction\n");
 
-       info("m1:f2: %x\n", f2);
-       info("Creating waiter\n");
+       ksft_print_dbg_msg("m1:f2: %x\n", f2);
+       ksft_print_dbg_msg("Creating waiter\n");
        res = create_rt_thread(&waiter, waiterfn, NULL, SCHED_FIFO, 1);
-       if (res) {
-               error("Creating waiting thread failed", res);
-               ret = RET_ERROR;
-               goto out;
-       }
+       if (res)
+               ksft_exit_fail_msg("Creating waiting thread failed");
 
-       info("Calling FUTEX_LOCK_PI on f2=%x @ %p\n", f2, &f2);
-       info("m2:f2: %x\n", f2);
+       ksft_print_dbg_msg("Calling FUTEX_LOCK_PI on f2=%x @ %p\n", f2, &f2);
+       ksft_print_dbg_msg("m2:f2: %x\n", f2);
        futex_lock_pi(&f2, 0, 0, FUTEX_PRIVATE_FLAG);
-       info("m3:f2: %x\n", f2);
+       ksft_print_dbg_msg("m3:f2: %x\n", f2);
 
        while (1) {
                /*
@@ -173,11 +125,11 @@ int main(int argc, char *argv[])
                 * restart futex_wait_requeue_pi() in the kernel. Wait for the
                 * waiter to block on f1 again.
                 */
-               info("Issuing SIGUSR1 to waiter\n");
+               ksft_print_dbg_msg("Issuing SIGUSR1 to waiter\n");
                pthread_kill(waiter, SIGUSR1);
                usleep(DELAY_US);
 
-               info("Requeueing waiter via FUTEX_CMP_REQUEUE_PI\n");
+               ksft_print_dbg_msg("Requeueing waiter via 
FUTEX_CMP_REQUEUE_PI\n");
                old_val = f1;
                res = futex_cmp_requeue_pi(&f1, old_val, &(f2), 1, 0,
                                           FUTEX_PRIVATE_FLAG);
@@ -191,12 +143,10 @@ int main(int argc, char *argv[])
                        atomic_set(&requeued, 1);
                        break;
                } else if (res < 0) {
-                       error("FUTEX_CMP_REQUEUE_PI failed\n", errno);
-                       ret = RET_ERROR;
-                       break;
+                       ksft_exit_fail_msg("FUTEX_CMP_REQUEUE_PI failed\n");
                }
        }
-       info("m4:f2: %x\n", f2);
+       ksft_print_dbg_msg("m4:f2: %x\n", f2);
 
        /*
         * Signal the waiter after requeue, waiter should return from
@@ -204,19 +154,14 @@ int main(int argc, char *argv[])
         * futex_unlock_pi() can't happen before the signal wakeup is detected
         * in the kernel.
         */
-       info("Issuing SIGUSR1 to waiter\n");
+       ksft_print_dbg_msg("Issuing SIGUSR1 to waiter\n");
        pthread_kill(waiter, SIGUSR1);
-       info("Waiting for waiter to return\n");
+       ksft_print_dbg_msg("Waiting for waiter to return\n");
        pthread_join(waiter, NULL);
 
-       info("Calling FUTEX_UNLOCK_PI on mutex=%x @ %p\n", f2, &f2);
+       ksft_print_dbg_msg("Calling FUTEX_UNLOCK_PI on mutex=%x @ %p\n", f2, 
&f2);
        futex_unlock_pi(&f2, FUTEX_PRIVATE_FLAG);
-       info("m5:f2: %x\n", f2);
-
- out:
-       if (ret == RET_PASS && waiter_ret)
-               ret = waiter_ret;
-
-       print_result(TEST_NAME, ret);
-       return ret;
+       ksft_print_dbg_msg("m5:f2: %x\n", f2);
 }
+
+TEST_HARNESS_MAIN
diff --git a/tools/testing/selftests/futex/functional/run.sh 
b/tools/testing/selftests/futex/functional/run.sh
index 
f9d598ef43ec3fb7580ab59bf6fc70b6ecd8a82d..37f614e7d7fd3ce9741861e23df40f87139f572a
 100755
--- a/tools/testing/selftests/futex/functional/run.sh
+++ b/tools/testing/selftests/futex/functional/run.sh
@@ -38,7 +38,7 @@ echo
 ./futex_requeue_pi_mismatched_ops
 
 echo
-./futex_requeue_pi_signal_restart $COLOR
+./futex_requeue_pi_signal_restart
 
 echo
 ./futex_wait_timeout $COLOR

-- 
2.50.1


Reply via email to