sptests: Avoid build system defined defines

Update #3818.
This commit is contained in:
Sebastian Huber
2019-11-12 09:36:20 +01:00
parent 150fbaf9c9
commit a467f59963
25 changed files with 1010 additions and 980 deletions
+24 -25
View File
@@ -242,9 +242,9 @@ if TEST_sp27a
sp_tests += sp27a
sp_screens += sp27a/sp27a.scn
sp_docs += sp27a/sp27a.doc
sp27a_SOURCES = sp27/init.c
sp27a_SOURCES = sp27a/init.c
sp27a_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_sp27a) \
$(support_includes) -DUSE_COUNTING_SEMAPHORE
$(support_includes)
endif
if NO_SMP
@@ -430,9 +430,8 @@ if TEST_sp53
sp_tests += sp53
sp_screens += sp53/sp53.scn
sp_docs += sp53/sp53.doc
sp53_SOURCES = sp52/init.c
sp53_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_sp53) $(support_includes) \
-DUSE_TIMER_SERVER
sp53_SOURCES = sp53/init.c
sp53_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_sp53) $(support_includes)
endif
if TEST_sp54
@@ -529,9 +528,9 @@ if TEST_sp66
sp_tests += sp66
sp_screens += sp66/sp66.scn
sp_docs += sp66/sp66.doc
sp66_SOURCES = sp65/init.c
sp66_SOURCES = sp66/init.c
sp66_CPPFLAGS = $(AM_CPPFLAGS) $(TEST_FLAGS_sp66) $(support_includes) \
-I$(top_srcdir)/include -DINHERIT_CEILING
-I$(top_srcdir)/include
endif
if TEST_sp67
@@ -1238,51 +1237,51 @@ spintrcritical01_SOURCES = spintrcritical01/init.c \
spintrcritical_support/intrcritical.h
spintrcritical01_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical01) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DFIFO_NO_TIMEOUT
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical02
sp_tests += spintrcritical02
sp_screens += spintrcritical02/spintrcritical02.scn
sp_docs += spintrcritical02/spintrcritical02.doc
spintrcritical02_SOURCES = spintrcritical01/init.c \
spintrcritical02_SOURCES = spintrcritical02/init.c \
spintrcritical_support/intrcritical.c
spintrcritical02_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical02) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DFIFO_WITH_TIMEOUT
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical03
sp_tests += spintrcritical03
sp_screens += spintrcritical03/spintrcritical03.scn
sp_docs += spintrcritical03/spintrcritical03.doc
spintrcritical03_SOURCES = spintrcritical01/init.c \
spintrcritical03_SOURCES = spintrcritical03/init.c \
spintrcritical_support/intrcritical.c
spintrcritical03_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical03) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DPRIORITY_NO_TIMEOUT
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical04
sp_tests += spintrcritical04
sp_screens += spintrcritical04/spintrcritical04.scn
sp_docs += spintrcritical04/spintrcritical04.doc
spintrcritical04_SOURCES = spintrcritical01/init.c \
spintrcritical04_SOURCES = spintrcritical04/init.c \
spintrcritical_support/intrcritical.c
spintrcritical04_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical04) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DPRIORITY_WITH_TIMEOUT
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical05
sp_tests += spintrcritical05
sp_screens += spintrcritical05/spintrcritical05.scn
sp_docs += spintrcritical05/spintrcritical05.doc
spintrcritical05_SOURCES = spintrcritical01/init.c \
spintrcritical05_SOURCES = spintrcritical05/init.c \
spintrcritical_support/intrcritical.c
spintrcritical05_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical05) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DPRIORITY_NO_TIMEOUT_REVERSE
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical06
@@ -1294,18 +1293,18 @@ spintrcritical06_SOURCES = spintrcritical06/init.c \
spintrcritical_support/intrcritical.h
spintrcritical06_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical06) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DPRIORITY_NO_TIMEOUT_FORWARD
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical07
sp_tests += spintrcritical07
sp_screens += spintrcritical07/spintrcritical07.scn
sp_docs += spintrcritical07/spintrcritical07.doc
spintrcritical07_SOURCES = spintrcritical06/init.c \
spintrcritical07_SOURCES = spintrcritical07/init.c \
spintrcritical_support/intrcritical.c
spintrcritical07_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical07) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DPRIORITY_NO_TIMEOUT_REVERSE
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical08
@@ -1353,18 +1352,18 @@ spintrcritical11_SOURCES = spintrcritical11/init.c \
spintrcritical_support/intrcritical.h
spintrcritical11_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical11) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DEVENT_ANY
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical12
sp_tests += spintrcritical12
sp_screens += spintrcritical12/spintrcritical12.scn
sp_docs += spintrcritical12/spintrcritical12.doc
spintrcritical12_SOURCES = spintrcritical11/init.c \
spintrcritical12_SOURCES = spintrcritical12/init.c \
spintrcritical_support/intrcritical.c
spintrcritical12_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical12) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DEVENT_ALL
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical13
@@ -1376,18 +1375,18 @@ spintrcritical13_SOURCES = spintrcritical13/init.c \
spintrcritical_support/intrcritical.h
spintrcritical13_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical13) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DFIRE_AFTER
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical14
sp_tests += spintrcritical14
sp_screens += spintrcritical14/spintrcritical14.scn
sp_docs += spintrcritical14/spintrcritical14.doc
spintrcritical14_SOURCES = spintrcritical13/init.c \
spintrcritical14_SOURCES = spintrcritical14/init.c \
spintrcritical_support/intrcritical.c
spintrcritical14_CPPFLAGS = $(AM_CPPFLAGS) \
$(TEST_FLAGS_spintrcritical14) $(support_includes) \
-I$(top_srcdir)/spintrcritical_support -DSERVER_FIRE_AFTER
-I$(top_srcdir)/spintrcritical_support
endif
if TEST_spintrcritical15
+1 -145
View File
@@ -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"
+145
View File
@@ -0,0 +1,145 @@
/*
* 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 ****************/
+2
View File
@@ -0,0 +1,2 @@
#define USE_COUNTING_SEMAPHORE
#include "../sp27/sp27impl.h"
+1 -139
View File
@@ -1,139 +1 @@
/*
* Based upon test code posted on the RTEMS User's Mailing List
* by Sergio Faustino <sergio.faustino@edisoft.pt>:
*
* http://www.rtems.org/pipermail/rtems-users/2009-June/005540.html
*
* 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.
*/
#if defined(USE_TIMER_SERVER)
#define TEST_NUMBER "53"
#define TSR_MODE "Server"
#define FIRE_WHEN rtems_timer_server_fire_when
#define FIRE_WHEN_STRING "rtems_timer_server_fire_when"
#else
#define TEST_NUMBER "52"
#define TSR_MODE "Interrupt"
#define FIRE_WHEN rtems_timer_fire_when
#define FIRE_WHEN_STRING "rtems_timer_fire_when"
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tmacros.h>
#include <string.h>
const char rtems_test_name[] = "SP " TEST_NUMBER;
#define INITIAL_YEAR 2009
static bool _timer_passage;
static rtems_time_of_day time_to_fire;
/*timer Routine*/
static rtems_timer_service_routine TIMER_service_routine(
rtems_id ignored_id,
void *user_data
)
{
rtems_status_code status;
rtems_time_of_day now;
_timer_passage = true;
memset( &now, 0, sizeof( now ) );
status = rtems_clock_get_tod( &now );
rtems_test_assert( status == RTEMS_SUCCESSFUL );
rtems_test_assert( memcmp( &now, &time_to_fire, sizeof( now ) ) == 0 );
}
static rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id timer_id;
rtems_name timer_name;
rtems_time_of_day global_time;
TEST_BEGIN();
/* build timer name*/
timer_name = rtems_build_name('T', 'M', '1', ' ');
/* create Timer */
status = rtems_timer_create(timer_name, &timer_id);
directive_failed( status, "rtems_timer_create" );
#if defined(USE_TIMER_SERVER)
/* initiate timer server */
status = rtems_timer_initiate_server(
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_ATTRIBUTES
);
directive_failed( status, "rtems_timer_initiate_server" );
#endif
/* Set system clock */
build_time(&global_time, 6, 8, INITIAL_YEAR, 16, 5, 13, 0);
status = rtems_clock_set(&global_time);
directive_failed( status, "rtems_clock_set" );
/* Set Timer to Fire */
/* build fire times */
time_to_fire = global_time;
/* only diferent second */
time_to_fire.year = INITIAL_YEAR + 5;
status = FIRE_WHEN(
timer_id,
&time_to_fire,
TIMER_service_routine,
(void*) NULL
);
directive_failed( status, FIRE_WHEN_STRING );
/* Set system clock FORWARD */
global_time.year = time_to_fire.year;
status = rtems_clock_set(&global_time);
if (!_timer_passage) {
puts( TSR_MODE " Timer FAILED to fire after setting time forward");
rtems_test_exit(0);
}
puts( TSR_MODE " Timer fired after setting time forward -- OK");
TEST_END();
rtems_test_exit(0);
}
/* configuration stuff */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MICROSECONDS_PER_TICK 50000
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT_TASK_PRIORITY (RTEMS_MINIMUM_PRIORITY + 1)
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
#include "sp52impl.h"
+139
View File
@@ -0,0 +1,139 @@
/*
* Based upon test code posted on the RTEMS User's Mailing List
* by Sergio Faustino <sergio.faustino@edisoft.pt>:
*
* http://www.rtems.org/pipermail/rtems-users/2009-June/005540.html
*
* 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.
*/
#if defined(USE_TIMER_SERVER)
#define TEST_NUMBER "53"
#define TSR_MODE "Server"
#define FIRE_WHEN rtems_timer_server_fire_when
#define FIRE_WHEN_STRING "rtems_timer_server_fire_when"
#else
#define TEST_NUMBER "52"
#define TSR_MODE "Interrupt"
#define FIRE_WHEN rtems_timer_fire_when
#define FIRE_WHEN_STRING "rtems_timer_fire_when"
#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <tmacros.h>
#include <string.h>
const char rtems_test_name[] = "SP " TEST_NUMBER;
#define INITIAL_YEAR 2009
static bool _timer_passage;
static rtems_time_of_day time_to_fire;
/*timer Routine*/
static rtems_timer_service_routine TIMER_service_routine(
rtems_id ignored_id,
void *user_data
)
{
rtems_status_code status;
rtems_time_of_day now;
_timer_passage = true;
memset( &now, 0, sizeof( now ) );
status = rtems_clock_get_tod( &now );
rtems_test_assert( status == RTEMS_SUCCESSFUL );
rtems_test_assert( memcmp( &now, &time_to_fire, sizeof( now ) ) == 0 );
}
static rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id timer_id;
rtems_name timer_name;
rtems_time_of_day global_time;
TEST_BEGIN();
/* build timer name*/
timer_name = rtems_build_name('T', 'M', '1', ' ');
/* create Timer */
status = rtems_timer_create(timer_name, &timer_id);
directive_failed( status, "rtems_timer_create" );
#if defined(USE_TIMER_SERVER)
/* initiate timer server */
status = rtems_timer_initiate_server(
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_ATTRIBUTES
);
directive_failed( status, "rtems_timer_initiate_server" );
#endif
/* Set system clock */
build_time(&global_time, 6, 8, INITIAL_YEAR, 16, 5, 13, 0);
status = rtems_clock_set(&global_time);
directive_failed( status, "rtems_clock_set" );
/* Set Timer to Fire */
/* build fire times */
time_to_fire = global_time;
/* only diferent second */
time_to_fire.year = INITIAL_YEAR + 5;
status = FIRE_WHEN(
timer_id,
&time_to_fire,
TIMER_service_routine,
(void*) NULL
);
directive_failed( status, FIRE_WHEN_STRING );
/* Set system clock FORWARD */
global_time.year = time_to_fire.year;
status = rtems_clock_set(&global_time);
if (!_timer_passage) {
puts( TSR_MODE " Timer FAILED to fire after setting time forward");
rtems_test_exit(0);
}
puts( TSR_MODE " Timer fired after setting time forward -- OK");
TEST_END();
rtems_test_exit(0);
}
/* configuration stuff */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MICROSECONDS_PER_TICK 50000
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT_TASK_PRIORITY (RTEMS_MINIMUM_PRIORITY + 1)
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
+2
View File
@@ -0,0 +1,2 @@
#define USE_TIMER_SERVER
#include "../sp52/sp52impl.h"
+1 -153
View File
@@ -1,153 +1 @@
/*
* 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 <tmacros.h>
#include <unistd.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_task Task_1(rtems_task_argument arg);
#if defined(INHERIT_CEILING)
#define TEST_NAME "66"
#define TASK_PRIORITY 2
#else
#define TEST_NAME "65"
#define TASK_PRIORITY 1
#endif
const char rtems_test_name[] = "SP " TEST_NAME;
static void assert_priority(rtems_task_priority expected)
{
rtems_status_code sc;
rtems_task_priority prio;
sc = rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &prio);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rtems_test_assert(prio == expected);
}
rtems_task Init(
rtems_task_argument ignored
)
{
int status;
rtems_id Mutex_id, Task_id;
TEST_BEGIN();
/*
* Verify that an initially locked priority ceiling mutex elevates the
* priority of the creating task.
*/
status = rtems_semaphore_create(
rtems_build_name( 's','e','m','1' ),
0,
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
1,
&Mutex_id
);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
assert_priority(1);
status = rtems_semaphore_release(Mutex_id);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
assert_priority(TASK_PRIORITY);
status = rtems_semaphore_delete(Mutex_id);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
/*
* Create binary semaphore (a.k.a. Mutex) with Priority Ceiling
* attribute.
*/
puts( "Creating semaphore" );
status = rtems_semaphore_create(
rtems_build_name( 's','e','m','1' ),
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
1,
&Mutex_id
);
directive_failed( status, "rtems_semaphore_create" );
puts( "Calling rtems_semaphore_obtain" );
status = rtems_semaphore_obtain( Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 );
directive_failed( status, "rtems_semaphore_obtain" );
puts( "Calling rtems_task_create" );
status = rtems_task_create( rtems_build_name( 'T', 'A', 'S', '1' ),
TASK_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id
);
directive_failed( status, "rtems_task_create" );
puts( "Calling rtems_task_start" );
status = rtems_task_start( Task_id, Task_1, (rtems_task_argument)&Mutex_id );
directive_failed( status, "rtems_task_start" );
sleep(1);
puts( "Calling semaphore release" );
status = rtems_semaphore_release( Mutex_id );
directive_failed( status, "rtems_semaphore_release" );
TEST_END();
rtems_test_exit(0);
}
rtems_task Task_1(
rtems_task_argument arg
)
{
int status_in_task;
rtems_id *Mutex_id = (rtems_id *)arg;
puts( "Init Task_1: Obtaining semaphore" );
status_in_task = rtems_semaphore_obtain(
*Mutex_id,
RTEMS_DEFAULT_OPTIONS,
0
);
directive_failed( status_in_task, "Task_1 rtems_semaphore_obtain" );
return;
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_INIT_TASK_PRIORITY TASK_PRIORITY
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_DISABLE_SMP_CONFIGURATION
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
#include "sp65impl.h"
+153
View File
@@ -0,0 +1,153 @@
/*
* 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 <tmacros.h>
#include <unistd.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_task Task_1(rtems_task_argument arg);
#if defined(INHERIT_CEILING)
#define TEST_NAME "66"
#define TASK_PRIORITY 2
#else
#define TEST_NAME "65"
#define TASK_PRIORITY 1
#endif
const char rtems_test_name[] = "SP " TEST_NAME;
static void assert_priority(rtems_task_priority expected)
{
rtems_status_code sc;
rtems_task_priority prio;
sc = rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &prio);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rtems_test_assert(prio == expected);
}
rtems_task Init(
rtems_task_argument ignored
)
{
int status;
rtems_id Mutex_id, Task_id;
TEST_BEGIN();
/*
* Verify that an initially locked priority ceiling mutex elevates the
* priority of the creating task.
*/
status = rtems_semaphore_create(
rtems_build_name( 's','e','m','1' ),
0,
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
1,
&Mutex_id
);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
assert_priority(1);
status = rtems_semaphore_release(Mutex_id);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
assert_priority(TASK_PRIORITY);
status = rtems_semaphore_delete(Mutex_id);
rtems_test_assert(status == RTEMS_SUCCESSFUL);
/*
* Create binary semaphore (a.k.a. Mutex) with Priority Ceiling
* attribute.
*/
puts( "Creating semaphore" );
status = rtems_semaphore_create(
rtems_build_name( 's','e','m','1' ),
1,
RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
1,
&Mutex_id
);
directive_failed( status, "rtems_semaphore_create" );
puts( "Calling rtems_semaphore_obtain" );
status = rtems_semaphore_obtain( Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 );
directive_failed( status, "rtems_semaphore_obtain" );
puts( "Calling rtems_task_create" );
status = rtems_task_create( rtems_build_name( 'T', 'A', 'S', '1' ),
TASK_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id
);
directive_failed( status, "rtems_task_create" );
puts( "Calling rtems_task_start" );
status = rtems_task_start( Task_id, Task_1, (rtems_task_argument)&Mutex_id );
directive_failed( status, "rtems_task_start" );
sleep(1);
puts( "Calling semaphore release" );
status = rtems_semaphore_release( Mutex_id );
directive_failed( status, "rtems_semaphore_release" );
TEST_END();
rtems_test_exit(0);
}
rtems_task Task_1(
rtems_task_argument arg
)
{
int status_in_task;
rtems_id *Mutex_id = (rtems_id *)arg;
puts( "Init Task_1: Obtaining semaphore" );
status_in_task = rtems_semaphore_obtain(
*Mutex_id,
RTEMS_DEFAULT_OPTIONS,
0
);
directive_failed( status_in_task, "Task_1 rtems_semaphore_obtain" );
return;
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_INIT_TASK_PRIORITY TASK_PRIORITY
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_DISABLE_SMP_CONFIGURATION
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
+2
View File
@@ -0,0 +1,2 @@
#define INHERIT_CEILING
#include "../sp65/sp65impl.h"
+2 -155
View File
@@ -1,155 +1,2 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
#include <rtems/score/threadimpl.h>
#if defined(FIFO_NO_TIMEOUT)
#define TEST_NAME "1"
#define TEST_STRING "FIFO/Without Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
#elif defined(FIFO_WITH_TIMEOUT)
#define TEST_NAME "2"
#define TEST_STRING "FIFO/With Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 10
#define SEMAPHORE_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
#elif defined(PRIORITY_NO_TIMEOUT)
#define TEST_NAME "3"
#define TEST_STRING "Priority/Without Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#elif defined(PRIORITY_WITH_TIMEOUT)
#define TEST_NAME "4"
#define TEST_STRING "Priority/With Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 10
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#elif defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define TEST_NAME "5"
#define TEST_STRING "Priority/Without Timeout (Reverse)"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
static Thread_Control *thread;
static rtems_id Semaphore;
static bool case_hit;
static bool interrupts_blocking_op(void)
{
Thread_Wait_flags flags = _Thread_Wait_flags_get( thread );
return
flags == ( THREAD_WAIT_CLASS_OBJECT | THREAD_WAIT_STATE_INTEND_TO_BLOCK );
}
static rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
rtems_status_code status;
if ( interrupts_blocking_op() ) {
case_hit = true;
}
status = rtems_semaphore_release( Semaphore );
directive_failed_with_level( status, "release", -1 );
}
static bool test_body( void *arg )
{
rtems_status_code status;
(void) arg;
status = rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
SEMAPHORE_OBTAIN_TIMEOUT
);
directive_failed( status, "rtems_semaphore_obtain" );
return case_hit;
}
static rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code status;
TEST_BEGIN();
thread = _Thread_Get_executing();
puts( "Init - Trying to generate semaphore release from ISR while blocking" );
puts( "Init - Variation is: " TEST_STRING );
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', ' ' ),
0,
SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore
);
directive_failed( status, "rtems_semaphore_create of SM1" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
if ( case_hit ) {
puts( "Init - Case hit" );
TEST_END();
} else
puts( "Init - Case not hit - ran too long" );
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#if defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define CONFIGURE_INIT_TASK_PRIORITY 250
#endif
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
#define FIFO_NO_TIMEOUT
#include "spintrcritical01impl.h"
@@ -0,0 +1,155 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
#include <rtems/score/threadimpl.h>
#if defined(FIFO_NO_TIMEOUT)
#define TEST_NAME "1"
#define TEST_STRING "FIFO/Without Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
#elif defined(FIFO_WITH_TIMEOUT)
#define TEST_NAME "2"
#define TEST_STRING "FIFO/With Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 10
#define SEMAPHORE_ATTRIBUTES RTEMS_DEFAULT_ATTRIBUTES
#elif defined(PRIORITY_NO_TIMEOUT)
#define TEST_NAME "3"
#define TEST_STRING "Priority/Without Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#elif defined(PRIORITY_WITH_TIMEOUT)
#define TEST_NAME "4"
#define TEST_STRING "Priority/With Timeout"
#define SEMAPHORE_OBTAIN_TIMEOUT 10
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#elif defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define TEST_NAME "5"
#define TEST_STRING "Priority/Without Timeout (Reverse)"
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
static Thread_Control *thread;
static rtems_id Semaphore;
static bool case_hit;
static bool interrupts_blocking_op(void)
{
Thread_Wait_flags flags = _Thread_Wait_flags_get( thread );
return
flags == ( THREAD_WAIT_CLASS_OBJECT | THREAD_WAIT_STATE_INTEND_TO_BLOCK );
}
static rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
rtems_status_code status;
if ( interrupts_blocking_op() ) {
case_hit = true;
}
status = rtems_semaphore_release( Semaphore );
directive_failed_with_level( status, "release", -1 );
}
static bool test_body( void *arg )
{
rtems_status_code status;
(void) arg;
status = rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
SEMAPHORE_OBTAIN_TIMEOUT
);
directive_failed( status, "rtems_semaphore_obtain" );
return case_hit;
}
static rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code status;
TEST_BEGIN();
thread = _Thread_Get_executing();
puts( "Init - Trying to generate semaphore release from ISR while blocking" );
puts( "Init - Variation is: " TEST_STRING );
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', ' ' ),
0,
SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore
);
directive_failed( status, "rtems_semaphore_create of SM1" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
if ( case_hit ) {
puts( "Init - Case hit" );
TEST_END();
} else
puts( "Init - Case not hit - ran too long" );
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#if defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define CONFIGURE_INIT_TASK_PRIORITY 250
#endif
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
@@ -0,0 +1,2 @@
#define FIFO_WITH_TIMEOUT
#include "../spintrcritical01/spintrcritical01impl.h"
@@ -0,0 +1,2 @@
#define PRIORITY_NO_TIMEOUT
#include "../spintrcritical01/spintrcritical01impl.h"
@@ -0,0 +1,2 @@
#define PRIORITY_WITH_TIMEOUT
#include "../spintrcritical01/spintrcritical01impl.h"
@@ -0,0 +1,2 @@
#define PRIORITY_NO_TIMEOUT_REVERSE
#include "../spintrcritical01/spintrcritical01impl.h"
+2 -147
View File
@@ -1,147 +1,2 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_task Secondary_task(rtems_task_argument arg);
/* common parameters */
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#if defined(PRIORITY_NO_TIMEOUT_FORWARD)
#define TEST_NAME "6"
#define TEST_STRING "Priority/Restart Search Task (Forward)"
#define INIT_PRIORITY 2
#define BLOCKER_PRIORITY 1
#define SEMAPHORE_OBTAIN_TIMEOUT 2
#elif defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define TEST_NAME "7"
#define TEST_STRING "Priority/Restart Search Task (Backward)"
#define INIT_PRIORITY 126
#define BLOCKER_PRIORITY 127
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
rtems_id Secondary_task_id;
rtems_id Semaphore;
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_task_restart( Secondary_task_id, 1 );
}
rtems_task Secondary_task(
rtems_task_argument arg
)
{
if ( arg )
(void) rtems_semaphore_flush( Semaphore );
(void) rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
RTEMS_NO_TIMEOUT
);
rtems_test_assert(0);
}
static bool test_body( void *arg )
{
(void) arg;
rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
SEMAPHORE_OBTAIN_TIMEOUT
);
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code status;
TEST_BEGIN();
puts( "Init - Trying to generate semaphore release from ISR while blocking" );
puts( "Init - There is no way for the test to know if it hits the case" );
puts( "Init - Variation is: " TEST_STRING );
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', ' ' ),
0,
SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore
);
directive_failed( status, "rtems_semaphore_create of SM1" );
status = rtems_task_create(
rtems_build_name( 'B', 'L', 'C', 'K' ),
BLOCKER_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES,
&Secondary_task_id
);
directive_failed( status, "rtems_task_create" );
status = rtems_task_start( Secondary_task_id, Secondary_task, 0 );
directive_failed( status, "rtems_task_start" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_INIT_TASK_PRIORITY INIT_PRIORITY
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_PREEMPT
#define CONFIGURE_MICROSECONDS_PER_TICK 2000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_DISABLE_SMP_CONFIGURATION
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
#define PRIORITY_NO_TIMEOUT_FORWARD
#include "spintrcritical06impl.h"
@@ -0,0 +1,147 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_task Secondary_task(rtems_task_argument arg);
/* common parameters */
#define SEMAPHORE_ATTRIBUTES RTEMS_PRIORITY
#if defined(PRIORITY_NO_TIMEOUT_FORWARD)
#define TEST_NAME "6"
#define TEST_STRING "Priority/Restart Search Task (Forward)"
#define INIT_PRIORITY 2
#define BLOCKER_PRIORITY 1
#define SEMAPHORE_OBTAIN_TIMEOUT 2
#elif defined(PRIORITY_NO_TIMEOUT_REVERSE)
#define TEST_NAME "7"
#define TEST_STRING "Priority/Restart Search Task (Backward)"
#define INIT_PRIORITY 126
#define BLOCKER_PRIORITY 127
#define SEMAPHORE_OBTAIN_TIMEOUT 0
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
rtems_id Secondary_task_id;
rtems_id Semaphore;
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_task_restart( Secondary_task_id, 1 );
}
rtems_task Secondary_task(
rtems_task_argument arg
)
{
if ( arg )
(void) rtems_semaphore_flush( Semaphore );
(void) rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
RTEMS_NO_TIMEOUT
);
rtems_test_assert(0);
}
static bool test_body( void *arg )
{
(void) arg;
rtems_semaphore_obtain(
Semaphore,
RTEMS_DEFAULT_OPTIONS,
SEMAPHORE_OBTAIN_TIMEOUT
);
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code status;
TEST_BEGIN();
puts( "Init - Trying to generate semaphore release from ISR while blocking" );
puts( "Init - There is no way for the test to know if it hits the case" );
puts( "Init - Variation is: " TEST_STRING );
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', ' ' ),
0,
SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore
);
directive_failed( status, "rtems_semaphore_create of SM1" );
status = rtems_task_create(
rtems_build_name( 'B', 'L', 'C', 'K' ),
BLOCKER_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES,
&Secondary_task_id
);
directive_failed( status, "rtems_task_create" );
status = rtems_task_start( Secondary_task_id, Secondary_task, 0 );
directive_failed( status, "rtems_task_start" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_INIT_TASK_PRIORITY INIT_PRIORITY
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_PREEMPT
#define CONFIGURE_MICROSECONDS_PER_TICK 2000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_DISABLE_SMP_CONFIGURATION
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
@@ -0,0 +1,2 @@
#define PRIORITY_NO_TIMEOUT_REVERSE
#include "../spintrcritical06/spintrcritical06impl.h"
+2 -96
View File
@@ -1,96 +1,2 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_id Main_task;
#if defined(EVENT_ANY)
#define TEST_NAME "11"
#define TEST_STRING "Event Any condition"
#define EVENTS_TO_SEND 0x1
#define EVENTS_TO_RECEIVE 0x3
#elif defined(EVENT_ALL)
#define TEST_NAME "12"
#define TEST_STRING "Event All condition"
#define EVENTS_TO_SEND 0x3
#define EVENTS_TO_RECEIVE 0x3
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_event_send( Main_task, EVENTS_TO_SEND );
}
static bool test_body( void *arg )
{
rtems_event_set out;
(void) arg;
rtems_event_receive( EVENTS_TO_RECEIVE, RTEMS_EVENT_ANY, 1, &out );
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
TEST_BEGIN();
puts( "Init - Test may not be able to detect case is hit reliably" );
puts( "Init - Trying to generate event send from ISR while blocking" );
puts( "Init - Variation is: " TEST_STRING );
Main_task = rtems_task_self();
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
#define EVENT_ANY
#include "spintrcritical11impl.h"
@@ -0,0 +1,96 @@
/*
* 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 <tmacros.h>
#include <intrcritical.h>
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_id Main_task;
#if defined(EVENT_ANY)
#define TEST_NAME "11"
#define TEST_STRING "Event Any condition"
#define EVENTS_TO_SEND 0x1
#define EVENTS_TO_RECEIVE 0x3
#elif defined(EVENT_ALL)
#define TEST_NAME "12"
#define TEST_STRING "Event All condition"
#define EVENTS_TO_SEND 0x3
#define EVENTS_TO_RECEIVE 0x3
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_event_send( Main_task, EVENTS_TO_SEND );
}
static bool test_body( void *arg )
{
rtems_event_set out;
(void) arg;
rtems_event_receive( EVENTS_TO_RECEIVE, RTEMS_EVENT_ANY, 1, &out );
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
TEST_BEGIN();
puts( "Init - Test may not be able to detect case is hit reliably" );
puts( "Init - Trying to generate event send from ISR while blocking" );
puts( "Init - Variation is: " TEST_STRING );
Main_task = rtems_task_self();
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
@@ -0,0 +1,2 @@
#define EVENT_ALL
#include "../spintrcritical11/spintrcritical11impl.h"
+2 -120
View File
@@ -1,120 +1,2 @@
/*
* COPYRIGHT (c) 1989-2009.
* 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 <tmacros.h>
#include <intrcritical.h>
#if defined(FIRE_AFTER)
#define TEST_NAME "13"
#define TEST_STRING "Timer Fire After"
#define TEST_DIRECTIVE rtems_timer_fire_after
#elif defined(SERVER_FIRE_AFTER)
#define TEST_NAME "14"
#define TEST_STRING "Timer Server Fire After"
#define TEST_DIRECTIVE rtems_timer_server_fire_after
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_timer_service_routine TimerMethod(rtems_id timer, void *arg);
rtems_id Timer;
rtems_timer_service_routine TimerMethod(
rtems_id timer,
void *arg
)
{
}
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_timer_fire_after( Timer, 10, TimerMethod, NULL );
}
static bool test_body( void *arg )
{
rtems_status_code sc;
(void) arg;
sc = TEST_DIRECTIVE( Timer, 10, TimerMethod, NULL );
rtems_test_assert( sc == RTEMS_SUCCESSFUL );
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code sc;
TEST_BEGIN();
puts( "Init - Trying to generate timer fire from ISR while firing" );
puts( "Init - Variation is: " TEST_STRING );
puts( "Init - There is no way for the test to know if it hits the case" );
#if defined(SERVER_FIRE_AFTER)
/* initiate timer server */
sc = rtems_timer_initiate_server(
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_ATTRIBUTES
);
directive_failed( sc, "rtems_timer_initiate_server" );
#endif
puts( "Init - rtems_timer_create - OK" );
sc = rtems_timer_create( rtems_build_name( 'P', 'E', 'R', '1' ), &Timer);
directive_failed( sc, "rtems_timer_create" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#if defined(SERVER_FIRE_AFTER)
#define CONFIGURE_MAXIMUM_TASKS 3
#else
#define CONFIGURE_MAXIMUM_TASKS 2
#endif
#define CONFIGURE_MAXIMUM_TIMERS 2
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
#define FIRE_AFTER
#include "spintrcritical13impl.h"
@@ -0,0 +1,120 @@
/*
* COPYRIGHT (c) 1989-2009.
* 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 <tmacros.h>
#include <intrcritical.h>
#if defined(FIRE_AFTER)
#define TEST_NAME "13"
#define TEST_STRING "Timer Fire After"
#define TEST_DIRECTIVE rtems_timer_fire_after
#elif defined(SERVER_FIRE_AFTER)
#define TEST_NAME "14"
#define TEST_STRING "Timer Server Fire After"
#define TEST_DIRECTIVE rtems_timer_server_fire_after
#else
#error "Test Mode not defined"
#endif
const char rtems_test_name[] = "SPINTRCRITICAL " TEST_NAME;
/* forward declarations to avoid warnings */
rtems_task Init(rtems_task_argument argument);
rtems_timer_service_routine test_release_from_isr(rtems_id timer, void *arg);
rtems_timer_service_routine TimerMethod(rtems_id timer, void *arg);
rtems_id Timer;
rtems_timer_service_routine TimerMethod(
rtems_id timer,
void *arg
)
{
}
rtems_timer_service_routine test_release_from_isr(
rtems_id timer,
void *arg
)
{
(void) rtems_timer_fire_after( Timer, 10, TimerMethod, NULL );
}
static bool test_body( void *arg )
{
rtems_status_code sc;
(void) arg;
sc = TEST_DIRECTIVE( Timer, 10, TimerMethod, NULL );
rtems_test_assert( sc == RTEMS_SUCCESSFUL );
return false;
}
rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code sc;
TEST_BEGIN();
puts( "Init - Trying to generate timer fire from ISR while firing" );
puts( "Init - Variation is: " TEST_STRING );
puts( "Init - There is no way for the test to know if it hits the case" );
#if defined(SERVER_FIRE_AFTER)
/* initiate timer server */
sc = rtems_timer_initiate_server(
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_ATTRIBUTES
);
directive_failed( sc, "rtems_timer_initiate_server" );
#endif
puts( "Init - rtems_timer_create - OK" );
sc = rtems_timer_create( rtems_build_name( 'P', 'E', 'R', '1' ), &Timer);
directive_failed( sc, "rtems_timer_create" );
interrupt_critical_section_test( test_body, NULL, test_release_from_isr );
TEST_END();
rtems_test_exit(0);
}
/* configuration information */
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#if defined(SERVER_FIRE_AFTER)
#define CONFIGURE_MAXIMUM_TASKS 3
#else
#define CONFIGURE_MAXIMUM_TASKS 2
#endif
#define CONFIGURE_MAXIMUM_TIMERS 2
#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* global variables */
@@ -0,0 +1,2 @@
#define SERVER_FIRE_AFTER
#include "../spintrcritical13/spintrcritical13impl.h"