source: rtems/c/src/ada-tests/sptests/sp03/sptest.adb @ 6d4e604b

4.104.114.84.95
Last change on this file since 6d4e604b was 6d4e604b, checked in by Joel Sherrill <joel.sherrill@…>, on 06/02/97 at 20:19:03

Initial revision

  • Property mode set to 100644
File size: 4.3 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 3 of the RTEMS
7--  Single Processor Test Suite.
8--
9--  DEPENDENCIES:
10--
11-- 
12--
13--  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
14--  On-Line Applications Research Corporation (OAR).
15--  All rights assigned to U.S. Government, 1994.
16--
17--  This material may be reproduced by or for the U.S. Government pursuant
18--  to the copyright license under the clause at DFARS 252.227-7013.  This
19--  notice must appear in all copies of this file and its derivatives.
20--
21--  sptest.adb,v 1.3 1995/07/12 19:41:13 joel Exp
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      TIME   : RTEMS.TIME_OF_DAY;
40      STATUS : RTEMS.STATUS_CODES;
41   begin
42
43      TEXT_IO.NEW_LINE( 2 );
44      TEXT_IO.PUT_LINE( "*** TEST 3 ***" );
45
46      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
47      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
48
49      RTEMS.TASK_CREATE(
50         SPTEST.TASK_NAME( 1 ),
51         1,
52         2048,
53         RTEMS.DEFAULT_MODES,
54         RTEMS.DEFAULT_ATTRIBUTES,
55         SPTEST.TASK_ID( 1 ),
56         STATUS
57      );
58      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
59
60      RTEMS.TASK_CREATE(
61         SPTEST.TASK_NAME( 2 ),
62         1,
63         2048,
64         RTEMS.DEFAULT_MODES,
65         RTEMS.DEFAULT_ATTRIBUTES,
66         SPTEST.TASK_ID( 2 ),
67         STATUS
68      );
69      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
70
71      RTEMS.TASK_START(
72         SPTEST.TASK_ID( 1 ),
73         SPTEST.TASK_1'ACCESS,
74         0,
75         STATUS
76      );
77      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
78
79      RTEMS.TASK_START(
80         SPTEST.TASK_ID( 2 ),
81         SPTEST.TASK_2'ACCESS,
82         0,
83         STATUS
84      );
85      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
86
87      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
88      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
89
90   end INIT;
91
92--PAGE
93--
94--  TASK_1
95--
96
97   procedure TASK_1 (
98      ARGUMENT : in     RTEMS.TASK_ARGUMENT
99   ) is
100      TIME   : RTEMS.TIME_OF_DAY;
101      STATUS : RTEMS.STATUS_CODES;
102   begin
103
104      TIME := ( 1988, 12, 31, 9, 15, 0, 0 );
105
106      RTEMS.CLOCK_SET( TIME, STATUS );
107      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET" );
108
109      TEST_SUPPORT.PUT_NAME( SPTEST.TASK_NAME( 1 ), FALSE );
110      TEST_SUPPORT.PRINT_TIME( "sets clock: ", TIME, "" );
111      TEXT_IO.NEW_LINE;
112
113      loop
114
115         RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
116         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
117
118         TEST_SUPPORT.PUT_NAME( SPTEST.TASK_NAME( 1 ), FALSE );
119         TEST_SUPPORT.PRINT_TIME( "going to sleep: ", TIME, "" );
120         TEXT_IO.NEW_LINE;
121
122         TIME.SECOND := TIME.SECOND + 5;
123         TIME.MINUTE := TIME.MINUTE + (TIME.SECOND / 60 );
124         TIME.SECOND := TIME.SECOND mod 60;
125         TIME.HOUR   := TIME.HOUR + (TIME.MINUTE / 60 );
126         TIME.MINUTE := TIME.MINUTE mod 60;
127         TIME.HOUR   := TIME.HOUR mod 24;
128
129         RTEMS.TASK_WAKE_WHEN( TIME, STATUS );
130         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_WHEN" );
131         
132         TEST_SUPPORT.PUT_NAME( SPTEST.TASK_NAME( 1 ), FALSE );
133         TEST_SUPPORT.PRINT_TIME( "awakened: ", TIME, "" );
134         TEXT_IO.NEW_LINE;
135
136      end loop;
137   
138   end TASK_1;
139
140--PAGE
141--
142--  TASK_2
143--
144
145   procedure TASK_2 (
146      ARGUMENT : in     RTEMS.TASK_ARGUMENT
147   ) is
148      TIME   : RTEMS.TIME_OF_DAY;
149      STATUS : RTEMS.STATUS_CODES;
150   begin
151
152      loop
153
154         RTEMS.TASK_WAKE_AFTER( TEST_SUPPORT.TICKS_PER_SECOND, STATUS );
155         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
156         
157         RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
158         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
159
160         if TIME.SECOND >= 17 then
161            TEXT_IO.PUT_LINE( "*** END OF TEST 3 ***" );
162            RTEMS.SHUTDOWN_EXECUTIVE( 0 );
163         end if;
164
165         TEST_SUPPORT.PUT_NAME( SPTEST.TASK_NAME( 2 ), FALSE );
166         TEST_SUPPORT.PRINT_TIME( " ", TIME, "" );
167         TEXT_IO.NEW_LINE;
168
169      end loop;
170
171   end TASK_2;
172
173end SPTEST;
Note: See TracBrowser for help on using the repository browser.