source: rtems/testsuites/ada/sptests/sp15/sptest.adb @ 76bd25e

5
Last change on this file since 76bd25e was f6c9334d, checked in by Sebastian Huber <sebastian.huber@…>, on Dec 1, 2017 at 7:51:17 AM

ada: Add standard test begin/end message

  • Property mode set to 100644
File size: 7.5 KB
Line 
1--
2--  SPTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 15 of the RTEMS
7--  Single Processor Test Suite.
8--
9--  DEPENDENCIES:
10--
11-- 
12--
13--  COPYRIGHT (c) 1989-2011.
14--  On-Line Applications Research Corporation (OAR).
15--
16--  The license and distribution terms for this file may in
17--  the file LICENSE in this distribution or at
18--  http://www.rtems.org/license/LICENSE.
19--
20
21with TEST_SUPPORT;
22with TEXT_IO;
23with UNSIGNED32_IO;
24with RTEMS.PARTITION;
25
26package body SPTEST is
27
28--
29--  INIT
30--
31
32   procedure INIT (
33      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
34   ) is
35      pragma Unreferenced(ARGUMENT);
36      STATUS : RTEMS.STATUS_CODES;
37   begin
38
39      TEXT_IO.NEW_LINE( 2 );
40      TEST_SUPPORT.ADA_TEST_BEGIN;
41
42      SPTEST.TASK_NAME( 1 ) := RTEMS.BUILD_NAME(  'T', 'A', '1', ' ' );
43
44      SPTEST.PARTITION_NAME( 1 ) := RTEMS.BUILD_NAME(  'P', 'T', '1', ' ' );
45      SPTEST.PARTITION_NAME( 2 ) := RTEMS.BUILD_NAME(  'P', 'T', '2', ' ' );
46
47      RTEMS.TASKS.CREATE( 
48         SPTEST.TASK_NAME( 1 ), 
49         4, 
50         2048, 
51         RTEMS.DEFAULT_MODES,
52         RTEMS.DEFAULT_ATTRIBUTES,
53         SPTEST.TASK_ID( 1 ),
54         STATUS
55      );
56      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF TA1" );
57
58      RTEMS.TASKS.START(
59         SPTEST.TASK_ID( 1 ),
60         SPTEST.TASK_1'ACCESS,
61         0,
62         STATUS
63      );
64      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF TA1" );
65
66      TEXT_IO.PUT_LINE( "INIT - partition_create - partition 1" );
67      RTEMS.PARTITION.CREATE(
68         SPTEST.PARTITION_NAME( 1 ),
69         AREA_1'ADDRESS,
70         4096,
71         512,
72         RTEMS.DEFAULT_ATTRIBUTES,
73         SPTEST.PARTITION_ID( 1 ),
74         STATUS
75      );
76      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE OF PT1" );
77
78      TEXT_IO.PUT_LINE( "INIT - partition_create - partition 2" );
79      RTEMS.PARTITION.CREATE(
80         SPTEST.PARTITION_NAME( 2 ),
81         AREA_2'ADDRESS,
82         274,
83         128,
84         RTEMS.DEFAULT_ATTRIBUTES,
85         SPTEST.PARTITION_ID( 2 ),
86         STATUS
87      );
88      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_CREATE OF PT2" );
89
90      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
91      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
92
93   end INIT;
94
95--
96--  PUT_ADDRESS_FROM_AREA_1
97--
98
99   procedure PUT_ADDRESS_FROM_AREA_1 (
100      TO_BE_PRINTED : in     RTEMS.ADDRESS
101   ) is
102
103   begin
104
105      UNSIGNED32_IO.PUT(
106         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_1'ADDRESS ),
107         WIDTH => 8,
108         BASE => 16
109      );
110
111   end PUT_ADDRESS_FROM_AREA_1;
112
113--
114--  PUT_ADDRESS_FROM_AREA_2
115--
116
117   procedure PUT_ADDRESS_FROM_AREA_2 (
118      TO_BE_PRINTED : in     RTEMS.ADDRESS
119   ) is
120   begin
121
122      UNSIGNED32_IO.PUT(
123         RTEMS.SUBTRACT( TO_BE_PRINTED, SPTEST.AREA_2'ADDRESS ),
124         WIDTH => 8,
125         BASE => 16
126      );
127
128   end PUT_ADDRESS_FROM_AREA_2;
129
130--
131--  TASK_1
132--
133
134   procedure TASK_1 (
135      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
136   ) is
137      pragma Unreferenced(ARGUMENT);
138      PTID_1           : RTEMS.ID;
139      PTID_2           : RTEMS.ID;
140      BUFFER_ADDRESS_1 : RTEMS.ADDRESS;
141      BUFFER_ADDRESS_2 : RTEMS.ADDRESS;
142      BUFFER_ADDRESS_3 : RTEMS.ADDRESS;
143      BUFFER_ADDRESS_4 : RTEMS.ADDRESS;
144      STATUS           : RTEMS.STATUS_CODES;
145   begin
146
147      TEXT_IO.PUT( "TA1 - partition_ident - partition 1 id = " );
148      RTEMS.PARTITION.IDENT( 
149         SPTEST.PARTITION_NAME( 1 ), 
150         RTEMS.SEARCH_ALL_NODES, 
151         PTID_1, 
152         STATUS
153      );
154      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_IDENT OF PT1" );
155      UNSIGNED32_IO.PUT( PTID_1, WIDTH => 8, BASE => 16 );
156      TEXT_IO.NEW_LINE;
157   
158      TEXT_IO.PUT( "TA1 - partition_ident - partition 2 id = " );
159      RTEMS.PARTITION.IDENT( 
160         SPTEST.PARTITION_NAME( 2 ), 
161         RTEMS.SEARCH_ALL_NODES, 
162         PTID_2, 
163         STATUS
164      );
165      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_IDENT OF PT2" );
166      UNSIGNED32_IO.PUT( PTID_2, WIDTH => 8, BASE => 16 );
167      TEXT_IO.NEW_LINE;
168
169      TEXT_IO.PUT(
170         "TA1 - partition_get_buffer - get buffer 1 from partition 1 - "
171      );
172      RTEMS.PARTITION.GET_BUFFER( 
173         SPTEST.PARTITION_ID( 1 ), 
174         BUFFER_ADDRESS_1,
175         STATUS
176      );
177      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
178      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_1 );
179      TEXT_IO.NEW_LINE;
180     
181      TEXT_IO.PUT(
182         "TA1 - partition_get_buffer - get buffer 2 from partition 1 - "
183      );
184      RTEMS.PARTITION.GET_BUFFER( 
185         SPTEST.PARTITION_ID( 1 ), 
186         BUFFER_ADDRESS_2,
187         STATUS
188      );
189      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
190      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_2 );
191      TEXT_IO.NEW_LINE;
192     
193      TEXT_IO.PUT(
194         "TA1 - partition_get_buffer - get buffer 1 from partition 2 - "
195      );
196      RTEMS.PARTITION.GET_BUFFER( 
197         SPTEST.PARTITION_ID( 2 ), 
198         BUFFER_ADDRESS_3,
199         STATUS
200      );
201      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
202      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_3 );
203      TEXT_IO.NEW_LINE;
204     
205      TEXT_IO.PUT(
206         "TA1 - partition_get_buffer - get buffer 2 from partition 2 - "
207      );
208      RTEMS.PARTITION.GET_BUFFER( 
209         SPTEST.PARTITION_ID( 2 ), 
210         BUFFER_ADDRESS_4,
211         STATUS
212      );
213      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_GET_BUFFER" );
214      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_4 );
215      TEXT_IO.NEW_LINE;
216
217      TEXT_IO.PUT(
218         "TA1 - partition_return_buffer - return buffer 1 to partition 1 - "
219      );
220      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_1 );
221      TEXT_IO.NEW_LINE;
222      RTEMS.PARTITION.RETURN_BUFFER( 
223         SPTEST.PARTITION_ID( 1 ), 
224         BUFFER_ADDRESS_1,
225         STATUS
226      );
227      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );
228 
229      TEXT_IO.PUT(
230         "TA1 - partition_return_buffer - return buffer 2 to partition 1 - "
231      );
232      SPTEST.PUT_ADDRESS_FROM_AREA_1( BUFFER_ADDRESS_2 );
233      TEXT_IO.NEW_LINE;
234      RTEMS.PARTITION.RETURN_BUFFER( 
235         SPTEST.PARTITION_ID( 1 ), 
236         BUFFER_ADDRESS_2,
237         STATUS
238      );
239      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );
240 
241      TEXT_IO.PUT(
242         "TA1 - partition_return_buffer - return buffer 1 to partition 2 - "
243      );
244      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_3 );
245      TEXT_IO.NEW_LINE;
246      RTEMS.PARTITION.RETURN_BUFFER( 
247         SPTEST.PARTITION_ID( 2 ), 
248         BUFFER_ADDRESS_3,
249         STATUS
250      );
251      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );
252 
253      TEXT_IO.PUT(
254         "TA1 - partition_return_buffer - return buffer 2 to partition 2 - "
255      );
256      SPTEST.PUT_ADDRESS_FROM_AREA_2( BUFFER_ADDRESS_4 );
257      TEXT_IO.NEW_LINE;
258      RTEMS.PARTITION.RETURN_BUFFER( 
259         SPTEST.PARTITION_ID( 2 ), 
260         BUFFER_ADDRESS_4,
261         STATUS
262      );
263      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_RETURN_BUFFER" );
264 
265      TEXT_IO.PUT_LINE( "TA1 - partition_delete - delete partition 1" );
266      RTEMS.PARTITION.DELETE( SPTEST.PARTITION_ID( 1 ), STATUS );
267      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_DELETE OF SELF" );
268
269      TEXT_IO.PUT_LINE( "TA1 - partition_delete - delete partition 2" );
270      RTEMS.PARTITION.DELETE( SPTEST.PARTITION_ID( 2 ), STATUS );
271      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "PARTITION_DELETE OF SELF" );
272
273      TEST_SUPPORT.ADA_TEST_END;
274      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
275   
276   end TASK_1;
277
278end SPTEST;
Note: See TracBrowser for help on using the repository browser.