source: rtems/testsuites/ada/tmtests/tm25/tmtest.adb @ 48aa4b5d

5
Last change on this file since 48aa4b5d was f6c9334d, checked in by Sebastian Huber <sebastian.huber@…>, on 12/01/17 at 07:51:17

ada: Add standard test begin/end message

  • Property mode set to 100644
File size: 3.4 KB
Line 
1--
2--  TMTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 25 of the RTEMS
7--  Timing 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 RTEMS_CALLING_OVERHEAD;
22with TEST_SUPPORT;
23with TEXT_IO;
24with TIME_TEST_SUPPORT;
25with TIMER_DRIVER;
26with RTEMS.CLOCK;
27with RTEMS.SEMAPHORE;
28
29package body TMTEST is
30
31--
32--  INIT
33--
34
35   procedure INIT (
36      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
37   ) is
38      pragma Unreferenced(ARGUMENT);
39      TASK_ID : RTEMS.ID;
40      STATUS  : RTEMS.STATUS_CODES;
41   begin
42
43      TEXT_IO.NEW_LINE( 2 );
44      TEST_SUPPORT.ADA_TEST_BEGIN;
45
46      RTEMS.SEMAPHORE.CREATE(
47         RTEMS.BUILD_NAME( 'S', 'M', '1', ' ' ),
48         0,
49         RTEMS.DEFAULT_ATTRIBUTES,
50         RTEMS.TASKS.NO_PRIORITY,
51         TMTEST.SEMAPHORE_ID,
52         STATUS
53      );
54      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE OF SM1" );
55
56      RTEMS.TASKS.CREATE(
57         RTEMS.BUILD_NAME( 'L', 'O', 'W', ' ' ),
58         254,
59         2048,
60         RTEMS.DEFAULT_MODES,
61         RTEMS.DEFAULT_ATTRIBUTES,
62         TASK_ID,
63         STATUS
64      );
65      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOW" );
66
67      RTEMS.TASKS.START(
68         TASK_ID,
69         TMTEST.LOW_TASK'ACCESS,
70         0,
71         STATUS
72      );
73      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOW" );
74
75      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
76      loop
77
78         RTEMS.TASKS.CREATE(
79            RTEMS.BUILD_NAME( 'T', 'I', 'M', 'E' ),
80            128,
81            1024,
82            RTEMS.DEFAULT_MODES,
83            RTEMS.DEFAULT_ATTRIBUTES,
84            TASK_ID,
85            STATUS
86         );
87         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOOP" );
88
89         RTEMS.TASKS.START(
90            TASK_ID,
91            TMTEST.HIGH_TASKS'ACCESS,
92            0,
93            STATUS
94         );
95         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOOP" );
96
97      end loop;
98      RTEMS.TASKS.DELETE( RTEMS.SELF, STATUS );
99      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
100
101   end INIT;
102
103--
104--  HIGH_TASKS
105--
106
107   procedure HIGH_TASKS (
108      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
109   ) is
110      pragma Unreferenced(ARGUMENT);
111      STATUS : RTEMS.STATUS_CODES;
112   begin
113
114      RTEMS.SEMAPHORE.OBTAIN(
115         TMTEST.SEMAPHORE_ID,
116         RTEMS.DEFAULT_OPTIONS,
117         RTEMS.INTERVAL'LAST,
118         STATUS
119      );
120      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_OBTAIN" );
121
122   end HIGH_TASKS;
123
124--
125--  LOW_TASK
126--
127
128   procedure LOW_TASK (
129      ARGUMENT : in     RTEMS.TASKS.ARGUMENT
130   ) is
131      pragma Unreferenced(ARGUMENT);
132      STATUS                   : RTEMS.STATUS_CODES;
133   begin
134
135      TIMER_DRIVER.INITIALIZE;
136         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
137         loop
138            RTEMS.CLOCK.TICK( STATUS );
139         end loop;
140      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
141
142      TIME_TEST_SUPPORT.PUT_TIME(
143         "CLOCK_TICK",
144         TMTEST.END_TIME,
145         TIME_TEST_SUPPORT.OPERATION_COUNT,
146         0,
147         RTEMS_CALLING_OVERHEAD.CLOCK_TICK
148      );
149
150      TEST_SUPPORT.ADA_TEST_END;
151      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
152
153   end LOW_TASK;
154
155end TMTEST;
Note: See TracBrowser for help on using the repository browser.