From 73f9c2c27ba6a22f8bc3ccef9298c951c3728741 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 23 Nov 2016 13:38:25 +0100 Subject: smptests/smpfatal03: Use timer to provoke error Avoid use of internal _Thread_Dispatch_disable() function. Update #2825. --- testsuites/smptests/smpfatal03/init.c | 52 ++++++++++++++--------------------- 1 file changed, 21 insertions(+), 31 deletions(-) (limited to 'testsuites/smptests/smpfatal03') diff --git a/testsuites/smptests/smpfatal03/init.c b/testsuites/smptests/smpfatal03/init.c index 0eb15aae81..9f7c6824ed 100644 --- a/testsuites/smptests/smpfatal03/init.c +++ b/testsuites/smptests/smpfatal03/init.c @@ -21,27 +21,21 @@ const char rtems_test_name[] = "SMPFATAL 3"; -static void task(rtems_task_argument arg) +static void bad( rtems_id timer_id, void *arg ) { - rtems_status_code sc; rtems_id *sem_id; - sem_id = (rtems_id *) arg; - - sc = rtems_semaphore_obtain(*sem_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sem_id = arg; - sc = rtems_task_wake_after(RTEMS_YIELD_PROCESSOR); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); - - rtems_test_assert(0); + rtems_semaphore_obtain( *sem_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); + rtems_test_assert( 0 ); } -static void Init(rtems_task_argument arg) +static void Init( rtems_task_argument arg ) { rtems_status_code sc; - rtems_id task_id; - rtems_id sem_id; + rtems_id timer_id; + rtems_id sem_id; TEST_BEGIN(); @@ -53,27 +47,22 @@ static void Init(rtems_task_argument arg) 1, &sem_id ); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); - sc = rtems_task_create( - rtems_build_name('T', 'A', 'S', 'K'), - 1, - RTEMS_MINIMUM_STACK_SIZE, - RTEMS_DEFAULT_MODES, - RTEMS_DEFAULT_ATTRIBUTES, - &task_id + sc = rtems_timer_create( + rtems_build_name( 'E', 'V', 'I', 'L' ), + &timer_id ); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); - sc = rtems_task_start(task_id, task, (rtems_task_argument) &sem_id); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sc = rtems_semaphore_obtain( sem_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); - sc = rtems_task_wake_after(RTEMS_YIELD_PROCESSOR); - rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sc = rtems_timer_fire_after( timer_id, 1, bad, &sem_id ); + rtems_test_assert( sc == RTEMS_SUCCESSFUL ); - _Thread_Dispatch_disable(); - rtems_semaphore_obtain(sem_id, RTEMS_WAIT, RTEMS_NO_TIMEOUT); - rtems_test_assert(0); + rtems_task_wake_after( 2 ); + rtems_test_assert( 0 ); } static void fatal_extension( @@ -91,14 +80,15 @@ static void fatal_extension( } } -#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER #define CONFIGURE_INITIAL_EXTENSIONS \ { .fatal = fatal_extension }, \ RTEMS_TEST_INITIAL_EXTENSION -#define CONFIGURE_MAXIMUM_TASKS 2 +#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_TIMERS 1 #define CONFIGURE_MAXIMUM_MRSP_SEMAPHORES 1 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE -- cgit v1.2.3