From 458d4e665242aea069946b7caabc3088d61c61a3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 11 Nov 1999 02:23:04 +0000 Subject: Added new test sp28 to test the task variable directives. --- testsuites/sptests/Makefile.am | 2 +- testsuites/sptests/sp28/init.c | 96 ++++++++++++++++++++++++++++++++++++++++ testsuites/sptests/sp28/sp28.doc | 0 testsuites/sptests/sp28/sp28.scn | 1 + 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 testsuites/sptests/sp28/init.c create mode 100644 testsuites/sptests/sp28/sp28.doc create mode 100644 testsuites/sptests/sp28/sp28.scn (limited to 'testsuites') diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am index 42ff48706d..90d236c578 100644 --- a/testsuites/sptests/Makefile.am +++ b/testsuites/sptests/Makefile.am @@ -15,7 +15,7 @@ all-local: $(PREINSTALLDIRS) ## sp10 and spfatal are not included for now SUBDIRS = . sp01 sp02 sp03 sp04 sp05 sp06 sp07 sp08 sp09 sp11 sp12 sp13 sp14 \ - sp15 sp16 sp17 sp19 sp20 sp21 sp22 sp23 sp24 sp25 sp26 sp27 spsize + sp15 sp16 sp17 sp19 sp20 sp21 sp22 sp23 sp24 sp25 sp26 sp27 sp28 spsize include $(top_srcdir)/../../../../automake/subdirs.am include $(top_srcdir)/../../../../automake/local.am diff --git a/testsuites/sptests/sp28/init.c b/testsuites/sptests/sp28/init.c new file mode 100644 index 0000000000..06083c45f7 --- /dev/null +++ b/testsuites/sptests/sp28/init.c @@ -0,0 +1,96 @@ +#define TEST_INIT +#include + +rtems_task Init(rtems_task_argument argument); + +#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER +#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 2 + +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE +#define CONFIGURE_MICROSECONDS_PER_TICK 52429 + +#define CONFIGURE_MICROSECONDS_INIT + +#include + +#include +#include +#include +#include + +volatile int taskvar; + +rtems_task +subtask (rtems_task_argument arg) +{ + int localvar = arg; + int i; + rtems_status_code sc; + + sc = rtems_task_variable_add (RTEMS_SELF, (void *) &taskvar); + if (sc != RTEMS_SUCCESSFUL) { + printf ("Can't add task variable: %s\n", rtems_status_text (sc)); + rtems_task_suspend (RTEMS_SELF); + } + taskvar = localvar; + while (localvar < 1000) { + localvar++; + rtems_task_wake_after (0); + taskvar++; + rtems_task_wake_after (0); + if (taskvar != localvar) { + printf ("Task:%d taskvar:%d localvar:%d\n", arg, taskvar, localvar); + rtems_task_suspend (RTEMS_SELF); + } + } + sc = rtems_task_variable_delete (RTEMS_SELF, (void *) &taskvar); + if (sc != RTEMS_SUCCESSFUL) { + printf ("Can't delete task variable: %s\n", rtems_status_text (sc)); + rtems_task_suspend (RTEMS_SELF); + } + for (i = 0 ; ; i++) { + taskvar = localvar = 100 * arg; + rtems_task_wake_after (0); + if (taskvar == localvar) { + printf ("Task:%d taskvar:%d localvar:%d\n", arg, taskvar, localvar); + rtems_task_suspend (RTEMS_SELF); + } + if ((arg == 3) && (i == 100)) { + printf ("Task variables test succeeded.\n"); + exit (0); + } + } +} + +void +starttask (int arg) +{ + rtems_id tid; + rtems_status_code sc; + + sc = rtems_task_create (rtems_build_name ('S', 'R', 'V', arg + 'A'), + 100, + 10000, + RTEMS_PREEMPT|RTEMS_NO_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0), + RTEMS_NO_FLOATING_POINT|RTEMS_LOCAL, + &tid); + if (sc != RTEMS_SUCCESSFUL) { + printf ("Can't create task: %s\n", rtems_status_text (sc)); + rtems_task_suspend (RTEMS_SELF); + } + sc = rtems_task_start (tid, subtask, arg); + if (sc != RTEMS_SUCCESSFUL) { + printf ("Can't start task: %s\n", rtems_status_text (sc)); + rtems_task_suspend (RTEMS_SELF); + } +} + +rtems_task +Init (rtems_task_argument ignored) +{ + starttask (1); + starttask (2); + starttask (3); + rtems_task_suspend (RTEMS_SELF); +} diff --git a/testsuites/sptests/sp28/sp28.doc b/testsuites/sptests/sp28/sp28.doc new file mode 100644 index 0000000000..e69de29bb2 diff --git a/testsuites/sptests/sp28/sp28.scn b/testsuites/sptests/sp28/sp28.scn new file mode 100644 index 0000000000..491c8aa089 --- /dev/null +++ b/testsuites/sptests/sp28/sp28.scn @@ -0,0 +1 @@ +Task variables test succeeded. -- cgit v1.2.3