source: rtems/c/src/ada-tests/samples/ticker/sptest.adb @ e7f86ef

4.104.114.84.95
Last change on this file since e7f86ef 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.9 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 1 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      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 1 ***" );
45
46      TIME := ( 1988, 12, 31, 9, 0, 0, 0 );
47
48      RTEMS.CLOCK_SET( TIME, STATUS );
49      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_SET" );
50
51      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
52      SPTEST.TASK_NAME( 2 ) := RTEMS.BUILD_NAME(  'T', 'A', '2', ' ' );
53      SPTEST.TASK_NAME( 3 ) := RTEMS.BUILD_NAME(  'T', 'A', '3', ' ' );
54
55      RTEMS.TASK_CREATE(
56         SPTEST.TASK_NAME( 1 ),
57         1,
58         2048,
59         RTEMS.DEFAULT_MODES,
60         RTEMS.DEFAULT_ATTRIBUTES,
61         SPTEST.TASK_ID( 1 ),
62         STATUS
63      );
64      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
65
66      RTEMS.TASK_CREATE(
67         SPTEST.TASK_NAME( 2 ),
68         1,
69         2048,
70         RTEMS.DEFAULT_MODES,
71         RTEMS.DEFAULT_ATTRIBUTES,
72         SPTEST.TASK_ID( 2 ),
73         STATUS
74      );
75      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA2" );
76
77      RTEMS.TASK_CREATE(
78         SPTEST.TASK_NAME( 3 ),
79         1,
80         2048,
81         RTEMS.DEFAULT_MODES,
82         RTEMS.DEFAULT_ATTRIBUTES,
83         SPTEST.TASK_ID( 3 ),
84         STATUS
85      );
86      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA3" );
87
88      RTEMS.TASK_START(
89         SPTEST.TASK_ID( 1 ),
90         SPTEST.TASK_1_THROUGH_3'ACCESS,
91         0,
92         STATUS
93      );
94      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
95
96      RTEMS.TASK_START(
97         SPTEST.TASK_ID( 2 ),
98         SPTEST.TASK_1_THROUGH_3'ACCESS,
99         0,
100         STATUS
101      );
102      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA2" );
103
104      RTEMS.TASK_START(
105         SPTEST.TASK_ID( 3 ),
106         SPTEST.TASK_1_THROUGH_3'ACCESS,
107         0,
108         STATUS
109      );
110      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA3" );
111
112      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
113      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
114
115   end INIT;
116
117--PAGE
118--
119--  TASK_1_THROUGH_3
120--
121
122   procedure TASK_1_THROUGH_3 (
123      ARGUMENT : in     RTEMS.TASK_ARGUMENT
124   ) is
125      TID    : RTEMS.ID;
126      TIME   : RTEMS.TIME_OF_DAY;
127      STATUS : RTEMS.STATUS_CODES;
128   begin
129
130      RTEMS.TASK_IDENT( RTEMS.SELF, RTEMS.SEARCH_ALL_NODES, TID, STATUS );
131      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_IDENT OF SELF" );
132   
133      loop
134
135         RTEMS.CLOCK_GET( RTEMS.CLOCK_GET_TOD, TIME'ADDRESS, STATUS );
136         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "CLOCK_GET" );
137
138         if TIME.SECOND >= 35 then
139            TEXT_IO.PUT_LINE( "*** END OF CLOCK TICK TEST ***" );
140            RTEMS.SHUTDOWN_EXECUTIVE( 0 );
141         end if;
142
143         TEST_SUPPORT.PUT_NAME(
144            SPTEST.TASK_NAME( TEST_SUPPORT.TASK_NUMBER( TID ) ),
145            FALSE
146         );
147
148         TEST_SUPPORT.PRINT_TIME( "- clock_get - ", TIME, "" );
149         TEXT_IO.NEW_LINE;
150
151         RTEMS.TASK_WAKE_AFTER(
152            TEST_SUPPORT.TASK_NUMBER( TID ) * 5 *
153              TEST_SUPPORT.TICKS_PER_SECOND,
154            STATUS
155         );
156         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_WAKE_AFTER" );
157         
158      end loop;
159   
160   end TASK_1_THROUGH_3;
161
162end SPTEST;
Note: See TracBrowser for help on using the repository browser.