Module: xenomai-3
Branch: stable-3.0.x
Commit: 1f4339aa6d69f30dce06536b70307ff3cf5e08d1
URL:    
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=1f4339aa6d69f30dce06536b70307ff3cf5e08d1

Author: Henning Schild <henning.sch...@siemens.com>
Date:   Fri May 12 13:41:00 2017 +0200

smokey/sigdebug: check kernel features with corectl

One of the subtests depends on a kernel feature, skip it if the feature
was not enabled.

Signed-off-by: Henning Schild <henning.sch...@siemens.com>

---

 testsuite/smokey/sigdebug/sigdebug.c |   19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/testsuite/smokey/sigdebug/sigdebug.c 
b/testsuite/smokey/sigdebug/sigdebug.c
index a643305..87f0be6 100644
--- a/testsuite/smokey/sigdebug/sigdebug.c
+++ b/testsuite/smokey/sigdebug/sigdebug.c
@@ -33,6 +33,7 @@ smokey_test_plugin(sigdebug,
 unsigned int expected_reason;
 bool sigdebug_received;
 pthread_mutex_t prio_invert;
+int corectl_debug;
 sem_t send_signal;
 char *mem;
 FILE *wd;
@@ -110,10 +111,15 @@ static void *rt_thread_body(void *cookie)
        check_sigdebug_received("SIGDEBUG_MIGRATE_SIGNAL");
 
        smokey_trace("relaxed mutex owner");
-       setup_checkdebug(SIGDEBUG_MIGRATE_PRIOINV);
-       err = pthread_mutex_lock(&prio_invert);
-       check_no_error("pthread_mutex_lock", err);
-       check_sigdebug_received("SIGDEBUG_MIGRATE_PRIOINV");
+       if (corectl_debug & _CC_COBALT_DEBUG_MUTEX_RELAXED) {
+               setup_checkdebug(SIGDEBUG_MIGRATE_PRIOINV);
+               err = pthread_mutex_lock(&prio_invert);
+               check_no_error("pthread_mutex_lock", err);
+               check_sigdebug_received("SIGDEBUG_MIGRATE_PRIOINV");
+       } else {
+               smokey_note("sigdebug \"SIGDEBUG_MIGRATE_PRIOINV\" skipped "
+                           "(no kernel support)");
+       }
 
        smokey_trace("page fault");
        setup_checkdebug(SIGDEBUG_MIGRATE_FAULT);
@@ -189,6 +195,11 @@ static int run_sigdebug(struct smokey_test *t, int argc, 
char *const argv[])
        if (err || wdog_delay == 0)
                return -ENOSYS;
 
+       err = cobalt_corectl(_CC_COBALT_GET_DEBUG, &corectl_debug,
+                            sizeof(corectl_debug));
+       if (err)
+               return -ENOSYS;
+
        smokey_parse_args(t, argc, argv);
        if (!SMOKEY_ARG_ISSET(sigdebug, no_watchdog) ||
            !SMOKEY_ARG_BOOL(sigdebug, no_watchdog)) {


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai-git

Reply via email to