summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-11 02:23:04 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-11 02:23:04 +0000
commit458d4e665242aea069946b7caabc3088d61c61a3 (patch)
tree59b2b9b5563449f0008c36f3f184ef54a5caebbb /testsuites
parentGeneral cleanup. Test documentation improved. The message buffer test (diff)
downloadrtems-458d4e665242aea069946b7caabc3088d61c61a3.tar.bz2
Added new test sp28 to test the task variable directives.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/sptests/Makefile.am2
-rw-r--r--testsuites/sptests/sp28/init.c96
-rw-r--r--testsuites/sptests/sp28/sp28.doc0
-rw-r--r--testsuites/sptests/sp28/sp28.scn1
4 files changed, 98 insertions, 1 deletions
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 <tmacros.h>
+
+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 <confdefs.h>
+
+#include <bsp.h>
+#include <rtems/error.h>
+#include <rtems/rtems/task_variable.h>
+#include <stdio.h>
+
+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
--- /dev/null
+++ b/testsuites/sptests/sp28/sp28.doc
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.