diff options
Diffstat (limited to 'testsuites/sptests/sp27/init.c')
-rw-r--r-- | testsuites/sptests/sp27/init.c | 146 |
1 files changed, 1 insertions, 145 deletions
diff --git a/testsuites/sptests/sp27/init.c b/testsuites/sptests/sp27/init.c index b9522fd364..c1e9ba5996 100644 --- a/testsuites/sptests/sp27/init.c +++ b/testsuites/sptests/sp27/init.c @@ -1,145 +1 @@ -/* - * Test for rtems_semaphore_flush - * - * COPYRIGHT (c) 1989-2012. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include <bsp.h> -#include <tmacros.h> - -#include <stdio.h> -#include <stdlib.h> - -/* forward declarations to avoid warnings */ -rtems_task Init(rtems_task_argument argument); -void starttask(int arg); -rtems_task subtask(rtems_task_argument arg); -void doTest(void); - -#define NTASK 4 - -#if defined(USE_COUNTING_SEMAPHORE) - #define TEST_NAME "27a" - #define TEST_SEMAPHORE_TYPE "counting" - #define TEST_SEMAPHORE_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES -#else - #define TEST_NAME "27" - #define TEST_SEMAPHORE_TYPE "binary" - #define TEST_SEMAPHORE_ATTRIBUTES (RTEMS_LOCAL| \ - RTEMS_BINARY_SEMAPHORE|RTEMS_NO_INHERIT_PRIORITY| \ - RTEMS_NO_PRIORITY_CEILING|RTEMS_FIFO) -#endif - -const char rtems_test_name[] = "SP " TEST_NAME; - -rtems_id semaphore; -volatile int flags[NTASK]; - -rtems_task subtask( - rtems_task_argument arg -) -{ - rtems_status_code sc; - - for (;;) { - flags[arg]++; - sc = rtems_semaphore_obtain(semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - if (sc == RTEMS_SUCCESSFUL) - puts("Obtained semaphore -- and should not have done so!"); - else if (sc != RTEMS_UNSATISFIED) - printf("Can't get semaphore: %s\n", rtems_status_text(sc)); - } -} - -void starttask( - int arg -) -{ - rtems_id tid; - rtems_status_code sc; - rtems_task_priority priority; - - rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &priority); - sc = rtems_task_create(rtems_build_name('S', 'R', 'V', arg + 'A'), - priority, - RTEMS_MINIMUM_STACK_SIZE, - RTEMS_PREEMPT|RTEMS_NO_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0), - RTEMS_NO_FLOATING_POINT|RTEMS_LOCAL, - &tid); - directive_failed( sc, "task create" ); - - sc = rtems_task_start(tid, subtask, (rtems_task_argument) arg); - directive_failed( sc, "task start" ); -} - -void doTest(void) -{ - rtems_status_code sc; - int pass, i; - - sc = rtems_semaphore_create( - rtems_build_name('S', 'E', 'M', 'F'), - 0, - TEST_SEMAPHORE_ATTRIBUTES, - 0, - &semaphore); - directive_failed( sc, "semaphore create" ); - - for (i = 0 ; i < NTASK ; i++) - flags[i] = 0; - - for (i = 0 ; i < NTASK ; i++) - starttask(i); - - for (pass = 1 ; pass < 10 ; pass++) { - rtems_task_wake_after(1); - for (i = 0 ; i < NTASK ; i++) { - if (flags[i] != pass) - printf("flags[%d] = %d -- expected %d\n", i, flags[i], pass); - } - sc = rtems_semaphore_flush(semaphore); - directive_failed( sc, "semaphore flush" ); - } - - printf("Flushed all waiting tasks\n" ); -} - -rtems_task Init( - rtems_task_argument ignored -) -{ - TEST_BEGIN(); - puts( "Testing " TEST_SEMAPHORE_TYPE " semaphore flush" ); - doTest(); - TEST_END(); - - rtems_test_exit(0); -} - -/**************** START OF CONFIGURATION INFORMATION ****************/ - -#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION - -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE - -#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER -#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER - -#define CONFIGURE_MAXIMUM_TASKS 6 -#define CONFIGURE_MAXIMUM_SEMAPHORES 1 - -#define CONFIGURE_INIT - -#include <rtems/confdefs.h> - -/**************** END OF CONFIGURATION INFORMATION ****************/ - +#include "sp27impl.h" |