source: rtems/c/src/ada-tests/sptests/sp17/sptest.adb @ f69283e2

4.104.114.84.95
Last change on this file since f69283e2 was bf9ae83, checked in by Joel Sherrill <joel.sherrill@…>, on 06/02/97 at 20:32:11

modified copyright notice to be the same as RTEMS 4.0.0.

changed the CVS ID string to be a "development" version.

  • Property mode set to 100644
File size: 3.8 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 17 of the RTEMS
7--  Single Processor Test Suite.
8--
9--  DEPENDENCIES:
10--
11-- 
12--
13--  COPYRIGHT (c) 1989-1997.
14--  On-Line Applications Research Corporation (OAR).
15--  Copyright assigned to U.S. Government, 1994.
16--
17--  The license and distribution terms for this file may in
18--  the file LICENSE in this distribution or at
19--  http://www.OARcorp.com/rtems/license.html.
20--
21--  $Id$
22--
23
24with INTERFACES; use INTERFACES;
25with RTEMS;
26with TEST_SUPPORT;
27with TEXT_IO;
28
29package body SPTEST is
30
31--PAGE
32--
33--  INIT
34--
35
36   procedure INIT (
37      ARGUMENT : in     RTEMS.TASK_ARGUMENT
38   ) is
39      STATUS : RTEMS.STATUS_CODES;
40   begin
41
42      TEXT_IO.NEW_LINE( 2 );
43      TEXT_IO.PUT_LINE( "*** TEST 17 ***" );
44
45      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
46      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
47
48      SPTEST.TASK_2_PREEMPTED := FALSE;
49
50      RTEMS.TASK_CREATE(
51         SPTEST.TASK_NAME( 1 ),
52         2,
53         2048,
54         RTEMS.DEFAULT_MODES,
55         RTEMS.DEFAULT_ATTRIBUTES,
56         SPTEST.TASK_ID( 1 ),
57         STATUS
58      );
59      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
60
61      RTEMS.TASK_CREATE(
62         SPTEST.TASK_NAME( 2 ),
63         1,
64         2048,
65         RTEMS.DEFAULT_MODES,
66         RTEMS.DEFAULT_ATTRIBUTES,
67         SPTEST.TASK_ID( 2 ),
68         STATUS
69      );
70      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
71
72      RTEMS.TASK_START(
73         SPTEST.TASK_ID( 1 ),
74         SPTEST.TASK_1'ACCESS,
75         0,
76         STATUS
77      );
78      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
79
80      RTEMS.TASK_START(
81         SPTEST.TASK_ID( 2 ),
82         SPTEST.TASK_2'ACCESS,
83         0,
84         STATUS
85      );
86      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
87
88      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
89      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
90
91   end INIT;
92
93--PAGE
94--
95--  PROCESS_ASR
96--
97
98   procedure PROCESS_ASR (
99      SIGNALS : in     RTEMS.SIGNAL_SET
100   ) is
101      STATUS : RTEMS.STATUS_CODES;
102   begin
103
104      RTEMS.TASK_RESUME( SPTEST.TASK_ID( 2 ), STATUS );
105      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "ASR - TASK_RESUME OF TA2" );
106
107   end PROCESS_ASR;
108
109--PAGE
110--
111--  TASK_1
112--
113
114   procedure TASK_1 (
115      ARGUMENT : in     RTEMS.TASK_ARGUMENT
116   ) is
117      STATUS : RTEMS.STATUS_CODES;
118   begin
119
120      TEXT_IO.PUT_LINE( "TA1 - signal_catch: initializing signal catcher" );
121      RTEMS.SIGNAL_CATCH(
122         SPTEST.PROCESS_ASR'ACCESS,
123         RTEMS.NO_ASR + RTEMS.NO_PREEMPT,
124         STATUS
125      );
126      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_CATCH" );
127
128      TEXT_IO.PUT_LINE( "TA1 - Sending signal to self" );
129      RTEMS.SIGNAL_SEND(
130         SPTEST.TASK_ID( 1 ),
131         RTEMS.SIGNAL_16,
132         STATUS
133      );
134      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SIGNAL_SEND" );
135
136      if SPTEST.TASK_2_PREEMPTED = TRUE then
137         TEXT_IO.PUT_LINE( "TA1 - TA2 correctly preempted me" );
138      end if;
139
140      TEXT_IO.PUT_LINE( "TA1 - Got Back!!!" );
141     
142      TEXT_IO.PUT_LINE( "*** END OF TEST 17 ***" );
143      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
144   
145   end TASK_1;
146
147--PAGE
148--
149--  TASK_2
150--
151
152   procedure TASK_2 (
153      ARGUMENT : in     RTEMS.TASK_ARGUMENT
154   ) is
155      STATUS : RTEMS.STATUS_CODES;
156   begin
157
158      SPTEST.TASK_2_PREEMPTED := FALSE;
159
160      TEXT_IO.PUT_LINE( "TA2 - Suspending self" );
161      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
162      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
163
164      TEXT_IO.PUT_LINE( "TA2 - signal_return preempted correctly" );
165
166      SPTEST.TASK_2_PREEMPTED := TRUE;
167
168      RTEMS.TASK_SUSPEND( RTEMS.SELF, STATUS );
169      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_SUSPEND OF TA2" );
170
171   end TASK_2;
172
173end SPTEST;
Note: See TracBrowser for help on using the repository browser.