source: rtems/c/src/tests/sptests/sp28/init.c @ 0724b658

4.104.114.84.95
Last change on this file since 0724b658 was 0724b658, checked in by Jennifer Averett <Jennifer.Averett@…>, on 01/13/00 at 17:01:35

Added start and end herald.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1/*
2 *  $Id$
3 */
4
5#define TEST_INIT
6#include <tmacros.h>
7
8rtems_task Init(rtems_task_argument argument);
9
10#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
11#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER
12#define CONFIGURE_MAXIMUM_USER_EXTENSIONS    2
13
14#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
15#define CONFIGURE_MICROSECONDS_PER_TICK       52429
16
17#define CONFIGURE_MICROSECONDS_INIT
18
19#include <confdefs.h>
20
21#include <bsp.h>
22#include <rtems/error.h>
23#include <stdio.h>
24
25volatile int taskvar;
26
27rtems_task
28subtask (rtems_task_argument arg)
29{
30        int localvar = arg;
31        int i;
32        rtems_status_code sc;
33
34        sc = rtems_task_variable_add (RTEMS_SELF, (void *) &taskvar);
35        if (sc != RTEMS_SUCCESSFUL) {
36                printf ("Can't add task variable: %s\n", rtems_status_text (sc));
37                rtems_task_suspend (RTEMS_SELF);
38        }
39        taskvar = localvar;
40        while (localvar < 1000) {
41                localvar++;
42                rtems_task_wake_after (0);
43                taskvar++;
44                rtems_task_wake_after (0);
45                if (taskvar != localvar) {
46                        printf ("Task:%d taskvar:%d localvar:%d\n", arg, taskvar, localvar);
47                        rtems_task_suspend (RTEMS_SELF);
48                }
49        }
50        sc = rtems_task_variable_delete (RTEMS_SELF, (void *) &taskvar);
51        if (sc != RTEMS_SUCCESSFUL) {
52                printf ("Can't delete task variable: %s\n", rtems_status_text (sc));
53                rtems_task_suspend (RTEMS_SELF);
54        }
55        for (i = 0 ; ; i++) {
56                taskvar = localvar = 100 * arg;
57                rtems_task_wake_after (0);
58                if (taskvar == localvar) {
59                        printf ("Task:%d taskvar:%d localvar:%d\n", arg, taskvar, localvar);
60                        rtems_task_suspend (RTEMS_SELF);
61                }
62                if ((arg == 3) && (i == 100)) {
63                        puts ("Task variables test succeeded.");
64                        puts ("*** END OF TEST SP28 ***");
65                        exit (0);
66                }
67        }
68}
69
70void
71starttask (int arg)
72{
73        rtems_id tid;
74        rtems_status_code sc;
75
76        sc = rtems_task_create (rtems_build_name ('S', 'R', 'V', arg + 'A'),
77                100,
78                RTEMS_MINIMUM_STACK_SIZE * 3,
79                RTEMS_PREEMPT|RTEMS_NO_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0),
80                RTEMS_NO_FLOATING_POINT|RTEMS_LOCAL,
81                &tid);
82        if (sc != RTEMS_SUCCESSFUL) {
83                printf ("Can't create task: %s\n", rtems_status_text (sc));
84                rtems_task_suspend (RTEMS_SELF);
85        }
86        sc = rtems_task_start (tid, subtask, arg);
87        if (sc != RTEMS_SUCCESSFUL) {
88                printf ("Can't start task: %s\n", rtems_status_text (sc));
89                rtems_task_suspend (RTEMS_SELF);
90        }
91}
92
93rtems_task
94Init (rtems_task_argument ignored)
95{
96        puts ("*** START OF TEST SP28 ***");
97        starttask (1);
98        starttask (2);
99        starttask (3);
100        rtems_task_suspend (RTEMS_SELF);
101}
Note: See TracBrowser for help on using the repository browser.