URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/rtos/rtems/c/src/tests/sptests/sp28
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/sp28.doc
--- init.c (nonexistent)
+++ init.c (revision 173)
@@ -0,0 +1,123 @@
+/*
+ * $Id: init.c,v 1.2 2001-09-27 12:02:36 chris Exp $
+ */
+
+#define TEST_INIT
+#include
+
+rtems_task Init(rtems_task_argument argument);
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 2
+
+#define CONFIGURE_MAXIMUM_TASKS 4
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+#define CONFIGURE_MICROSECONDS_PER_TICK 52429
+
+#define CONFIGURE_MICROSECONDS_INIT
+
+#include
+
+#include
+#include
+#include
+
+volatile void *taskvar;
+volatile int nRunning;
+volatile int nDeleted;
+
+rtems_task
+subtask (rtems_task_argument arg)
+{
+ int localvar = arg;
+ int i;
+ rtems_status_code sc;
+
+ nRunning++;
+ while (nRunning != 3)
+ rtems_task_wake_after (0);
+ sc = rtems_task_variable_add (RTEMS_SELF, (void **)&taskvar, NULL);
+ if (sc != RTEMS_SUCCESSFUL) {
+ printf ("Can't add task variable: %s\n", rtems_status_text (sc));
+ rtems_task_suspend (RTEMS_SELF);
+ }
+ taskvar = (void *)localvar;
+ while (localvar < 1000) {
+ localvar++;
+ rtems_task_wake_after (0);
+ taskvar = (void *)((int)taskvar + 1);
+ rtems_task_wake_after (0);
+ if ((int)taskvar != localvar) {
+ printf ("Task:%d taskvar:%d localvar:%d\n", arg, (int)taskvar, localvar);
+ rtems_task_suspend (RTEMS_SELF);
+ }
+ }
+ sc = rtems_task_variable_delete (RTEMS_SELF, (void **)&taskvar);
+ nDeleted++;
+ if (sc != RTEMS_SUCCESSFUL) {
+ printf ("Can't delete task variable: %s\n", rtems_status_text (sc));
+ nRunning--;
+ rtems_task_suspend (RTEMS_SELF);
+ }
+ if ((int)taskvar == localvar) {
+ printf ("Task:%d deleted taskvar:%d localvar:%d\n", arg, (int)taskvar, localvar);
+ nRunning--;
+ rtems_task_suspend (RTEMS_SELF);
+ }
+ while (nDeleted != 3)
+ rtems_task_wake_after (0);
+ for (i = 0 ; i < 1000 ; i++) {
+ taskvar = (void *)(localvar = 100 * arg);
+ rtems_task_wake_after (0);
+ if (nRunning <= 1)
+ break;
+ if ((int)taskvar == localvar) {
+ printf ("Task:%d taskvar:%d localvar:%d\n", arg, (int)taskvar, localvar);
+ nRunning--;
+ rtems_task_suspend (RTEMS_SELF);
+ }
+ }
+ nRunning--;
+ while (nRunning)
+ rtems_task_wake_after (0);
+ printf ("Task variables test complete.\n");
+ puts ("*** END OF TEST SP28 ***" );
+ 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,
+ RTEMS_MINIMUM_STACK_SIZE,
+ 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)
+{
+
+ puts ("*** START OF TEST SP28 ***" );
+ puts ("Task variables test begins. Any output between\n");
+ puts ("this line and the `Task variables test complete' line indicates an error.\n");
+ starttask (1);
+ starttask (2);
+ starttask (3);
+ rtems_task_suspend (RTEMS_SELF);
+}
/Makefile.am
0,0 → 1,35
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:36 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = sp28 |
|
MANAGERS = all |
|
C_FILES = init.c |
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) |
|
DOCTYPES = scn |
DOCS = $(DOCTYPES:%=$(TEST).%) |
|
SRCS = $(C_FILES) $(H_FILES) |
OBJS = $(C_O_FILES) |
|
PRINT_SRCS = $(DOCS) |
|
PGM = ${ARCH}/$(TEST).exe |
|
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg |
include $(RTEMS_ROOT)/make/leaf.cfg |
include $(top_srcdir)/sptests.am |
|
${PGM}: $(OBJS) $(LINK_FILES) |
$(make-exe) |
|
all-local: $(ARCH) $(TMPINSTALL_FILES) |
|
EXTRA_DIST = $(C_FILES) $(DOCS) |
|
include $(top_srcdir)/../../../../automake/local.am |
/sp28.scn
0,0 → 1,3
*** START OF TEST SP28 *** |
Task variables test succeeded. |
*** END OF TEST SP28 *** |