source: rtems/c/src/ada-tests/tmtests/tm26/tmtest.adp @ 5363249

4.104.114.84.95
Last change on this file since 5363249 was 5363249, checked in by Joel Sherrill <joel.sherrill@…>, on Jun 3, 1997 at 10:38:10 PM

new file

  • Property mode set to 100644
File size: 15.6 KB
Line 
1--
2--  TMTEST / BODY
3--
4--  DESCRIPTION:
5--
6--  This package is the implementation of Test 26 of the RTEMS
7--  Timing 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_CALLING_OVERHEAD;
26with RTEMS;
27with RTEMS_TEST_SUPPORT;
28with TEST_SUPPORT;
29with TEXT_IO;
30with TIME_TEST_SUPPORT;
31with UNSIGNED32_IO;
32
33include(../../support/fp.inc)
34
35package body TMTEST is
36
37--PAGE
38--
39--  INIT
40--
41
42   procedure INIT (
43      ARGUMENT : in     RTEMS.TASK_ARGUMENT
44   ) is
45      INDEX   : RTEMS.UNSIGNED32;
46      TASK_ID : RTEMS.ID;
47      STATUS  : RTEMS.STATUS_CODES;
48   begin
49
50      TEXT_IO.NEW_LINE( 2 );
51      TEXT_IO.PUT_LINE( "*** TIME TEST 26 ***" );
52
53      RTEMS.TASK_CREATE(
54         RTEMS.BUILD_NAME(  'F', 'P', '1', ' ' ),
55         201,
56         2048,
57         RTEMS.DEFAULT_MODES,
58         RTEMS.FLOATING_POINT,
59         TASK_ID,
60         STATUS
61      );
62      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF FP1" );
63
64      RTEMS.TASK_START(
65         TASK_ID,
66         TMTEST.FLOATING_POINT_TASK_1'ACCESS,
67         0,
68         STATUS
69      );
70      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF FP1" );
71
72      RTEMS.TASK_CREATE(
73         RTEMS.BUILD_NAME(  'F', 'P', '2', ' ' ),
74         202,
75         2048,
76         RTEMS.DEFAULT_MODES,
77         RTEMS.FLOATING_POINT,
78         TASK_ID,
79         STATUS
80      );
81      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF FP2" );
82
83      RTEMS.TASK_START(
84         TASK_ID,
85         TMTEST.FLOATING_POINT_TASK_2'ACCESS,
86         0,
87         STATUS
88      );
89      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF FP2" );
90
91      RTEMS.TASK_CREATE(
92         RTEMS.BUILD_NAME(  'L', 'O', 'W', ' ' ),
93         200,
94         2048,
95         RTEMS.DEFAULT_MODES,
96         RTEMS.DEFAULT_ATTRIBUTES,
97         TASK_ID,
98         STATUS
99      );
100      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF LOW" );
101
102      RTEMS.TASK_START(
103         TASK_ID,
104         TMTEST.LOW_TASK'ACCESS,
105         0,
106         STATUS
107      );
108      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF LOW" );
109
110      RTEMS.TASK_CREATE(
111         RTEMS.BUILD_NAME(  'M', 'I', 'D', ' ' ),
112         128,
113         2048,
114         RTEMS.DEFAULT_MODES,
115         RTEMS.DEFAULT_ATTRIBUTES,
116         TASK_ID,
117         STATUS
118      );
119      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF MIDDLE" );
120
121      RTEMS.TASK_START(
122         TASK_ID,
123         TMTEST.MIDDLE_TASK'ACCESS,
124         0,
125         STATUS
126      );
127      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF MIDDLE" );
128
129      RTEMS.TASK_CREATE(
130         RTEMS.BUILD_NAME(  'H', 'I', 'G', 'H' ),
131         5,
132         2048,
133         RTEMS.DEFAULT_MODES,
134         RTEMS.DEFAULT_ATTRIBUTES,
135         TASK_ID,
136         STATUS
137      );
138      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE OF HIGH" );
139
140      RTEMS.TASK_START(
141         TASK_ID,
142         TMTEST.HIGH_TASK'ACCESS,
143         0,
144         STATUS
145      );
146      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START OF HIGH" );
147
148      RTEMS.SEMAPHORE_CREATE(
149         RTEMS.BUILD_NAME(  'S', 'E', 'M', '1' ),
150         TIME_TEST_SUPPORT.OPERATION_COUNT,
151         RTEMS.DEFAULT_ATTRIBUTES,
152         TMTEST.SEMAPHORE_ID,
153         STATUS
154      );
155      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "SEMAPHORE_CREATE" );
156
157      for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
158      loop
159
160         RTEMS.TASK_CREATE(
161            RTEMS.BUILD_NAME(  'N', 'U', 'L', 'L' ),
162            254,
163            512,
164            RTEMS.DEFAULT_MODES,
165            RTEMS.DEFAULT_ATTRIBUTES,
166            TASK_ID,
167            STATUS
168         );
169         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_CREATE LOOP" );
170
171         RTEMS.TASK_START(
172            TASK_ID,
173            TMTEST.NULL_TASK'ACCESS,
174            0,
175            STATUS
176         );
177         TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_START LOOP" );
178
179      end loop;
180
181      RTEMS.TASK_DELETE( RTEMS.SELF, STATUS );
182      TEST_SUPPORT.DIRECTIVE_FAILED( STATUS, "TASK_DELETE OF SELF" );
183
184   end INIT;
185
186--PAGE
187--
188--  NULL_TASK
189--
190
191   procedure NULL_TASK (
192      ARGUMENT : in     RTEMS.TASK_ARGUMENT
193   ) is
194   begin
195
196      NULL;
197
198   end NULL_TASK;
199
200--PAGE
201--
202--  HIGH_TASK
203--
204
205   procedure HIGH_TASK (
206      ARGUMENT : in     RTEMS.TASK_ARGUMENT
207   ) is
208   begin
209
210      TIMER_DRIVER.INITIALIZE;
211         RTEMS_TEST_SUPPORT.THREAD_ENABLE_DISPATCH;
212      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
213     
214      TIME_TEST_SUPPORT.PUT_TIME(
215         "THREAD_ENABLE_DISPATCH",
216         TMTEST.END_TIME,
217         1,
218         0,
219         0
220      );
221
222      TIMER_DRIVER.INITIALIZE;
223         RTEMS_TEST_SUPPORT.THREAD_SET_STATE(
224            RTEMS_TEST_SUPPORT.THREAD_EXECUTING,
225            RTEMS.SUSPENDED
226         );
227      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
228     
229      TIME_TEST_SUPPORT.PUT_TIME(
230         "THREAD_SET_STATE",
231         TMTEST.END_TIME,
232         1,
233         0,
234         0
235      );
236
237      -- FORCE CONTEXT SWITCH
238
239      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := TRUE;
240
241      TIMER_DRIVER.INITIALIZE;
242         RTEMS_TEST_SUPPORT.THREAD_DISPATCH; -- dispatches MIDDLE_TASK
243
244   end HIGH_TASK;
245
246--PAGE
247--
248--  MIDDLE_TASK
249--
250
251   procedure MIDDLE_TASK (
252      ARGUMENT : in     RTEMS.TASK_ARGUMENT
253   ) is
254   begin
255
256      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
257     
258      TIME_TEST_SUPPORT.PUT_TIME(
259         "THREAD_DISPATCH (NO FP)",
260         TMTEST.END_TIME,
261         1,
262         0,
263         0
264      );
265
266      RTEMS_TEST_SUPPORT.THREAD_SET_STATE(
267         RTEMS_TEST_SUPPORT.THREAD_EXECUTING,
268         RTEMS.SUSPENDED
269      );
270
271      TMTEST.MIDDLE_TCB := RTEMS_TEST_SUPPORT.THREAD_EXECUTING;
272 
273      RTEMS_TEST_SUPPORT.THREAD_EXECUTING :=
274          RTEMS_TEST_SUPPORT.THREAD_TO_CONTROL_POINTER(
275             RTEMS_TEST_SUPPORT.CHAIN_NODE_POINTER_TO_ADDRESS(
276                RTEMS_TEST_SUPPORT.THREAD_READY_CHAIN( 200 ).FIRST
277             )
278          );
279
280      -- do NOT force context switch
281
282      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := FALSE;
283
284      RTEMS_TEST_SUPPORT.THREAD_DISABLE_DISPATCH;
285
286      TIMER_DRIVER.INITIALIZE;
287         RTEMS_TEST_SUPPORT.CONTEXT_SWITCH(
288            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
289               TMTEST.MIDDLE_TCB.REGISTERS'ADDRESS
290            ),
291            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
292               RTEMS_TEST_SUPPORT.THREAD_EXECUTING.REGISTERS'ADDRESS
293            )
294         );
295
296   end MIDDLE_TASK;
297
298--PAGE
299--
300--  LOW_TASK
301--
302
303   procedure LOW_TASK (
304      ARGUMENT : in     RTEMS.TASK_ARGUMENT
305   ) is
306      EXECUTING : RTEMS.TCB_POINTER;
307   begin
308
309      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
310     
311      TIME_TEST_SUPPORT.PUT_TIME(
312         "CONTEXT_SWITCH (NO FP)",
313         TMTEST.END_TIME,
314         1,
315         0,
316         0
317      );
318
319      EXECUTING := RTEMS_TEST_SUPPORT.THREAD_EXECUTING;
320   
321      RTEMS_TEST_SUPPORT.THREAD_EXECUTING :=
322          RTEMS_TEST_SUPPORT.THREAD_TO_CONTROL_POINTER(
323             RTEMS_TEST_SUPPORT.CHAIN_NODE_POINTER_TO_ADDRESS(
324                RTEMS_TEST_SUPPORT.THREAD_READY_CHAIN( 201 ).FIRST
325             )
326          );
327
328      -- do NOT force context switch
329
330      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := FALSE;
331
332      RTEMS_TEST_SUPPORT.THREAD_DISABLE_DISPATCH;
333
334      TIMER_DRIVER.INITIALIZE;
335
336         RTEMS_TEST_SUPPORT.CONTEXT_RESTORE_FP(
337            RTEMS_TEST_SUPPORT.THREAD_EXECUTING.FP_CONTEXT'ADDRESS
338         );
339         RTEMS_TEST_SUPPORT.CONTEXT_SWITCH(
340            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
341               EXECUTING.REGISTERS'ADDRESS
342            ),
343            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
344               RTEMS_TEST_SUPPORT.THREAD_EXECUTING.REGISTERS'ADDRESS
345            )
346         );
347
348   end LOW_TASK;
349
350--PAGE
351--
352--  FLOATING_POINT_TASK_1
353--
354
355   procedure FLOATING_POINT_TASK_1 (
356      ARGUMENT : in     RTEMS.TASK_ARGUMENT
357   ) is
358      EXECUTING           : RTEMS.TCB_POINTER;
359      FP_DECLARE;
360   begin
361
362      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
363     
364      TIME_TEST_SUPPORT.PUT_TIME(
365         "CONTEXT_SWITCH (restore 1st FP)",
366         TMTEST.END_TIME,
367         1,
368         0,
369         0
370      );
371
372      EXECUTING := RTEMS_TEST_SUPPORT.THREAD_EXECUTING;
373   
374      RTEMS_TEST_SUPPORT.THREAD_EXECUTING :=
375          RTEMS_TEST_SUPPORT.THREAD_TO_CONTROL_POINTER(
376             RTEMS_TEST_SUPPORT.CHAIN_NODE_POINTER_TO_ADDRESS(
377                RTEMS_TEST_SUPPORT.THREAD_READY_CHAIN( 202 ).FIRST
378             )
379          );
380
381      -- do NOT force context switch
382
383      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := FALSE;
384
385      RTEMS_TEST_SUPPORT.THREAD_DISABLE_DISPATCH;
386
387      TIMER_DRIVER.INITIALIZE;
388
389         RTEMS_TEST_SUPPORT.CONTEXT_SAVE_FP( EXECUTING.FP_CONTEXT'ADDRESS );
390         RTEMS_TEST_SUPPORT.CONTEXT_RESTORE_FP(
391            RTEMS_TEST_SUPPORT.THREAD_EXECUTING.FP_CONTEXT'ADDRESS
392         );
393         RTEMS_TEST_SUPPORT.CONTEXT_SWITCH(
394            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
395               EXECUTING.REGISTERS'ADDRESS
396            ),
397            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
398               RTEMS_TEST_SUPPORT.THREAD_EXECUTING.REGISTERS'ADDRESS
399            )
400         );
401
402      -- switch to FLOATING_POINT_TASK_2
403
404      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
405     
406      TIME_TEST_SUPPORT.PUT_TIME(
407         "CONTEXT_SWITCH (used->init FP)",
408         TMTEST.END_TIME,
409         1,
410         0,
411         0
412      );
413
414      FP_LOAD( 1.0 );
415
416      EXECUTING := RTEMS_TEST_SUPPORT.THREAD_EXECUTING;
417   
418      RTEMS_TEST_SUPPORT.THREAD_EXECUTING :=
419          RTEMS_TEST_SUPPORT.THREAD_TO_CONTROL_POINTER(
420             RTEMS_TEST_SUPPORT.CHAIN_NODE_POINTER_TO_ADDRESS(
421                RTEMS_TEST_SUPPORT.THREAD_READY_CHAIN( 202 ).FIRST
422             )
423          );
424
425      -- do NOT force context switch
426
427      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := FALSE;
428
429      RTEMS_TEST_SUPPORT.THREAD_DISABLE_DISPATCH;
430
431      TIMER_DRIVER.INITIALIZE;
432
433         RTEMS_TEST_SUPPORT.CONTEXT_SAVE_FP( EXECUTING.FP_CONTEXT'ADDRESS );
434         RTEMS_TEST_SUPPORT.CONTEXT_RESTORE_FP(
435            RTEMS_TEST_SUPPORT.THREAD_EXECUTING.FP_CONTEXT'ADDRESS
436         );
437         RTEMS_TEST_SUPPORT.CONTEXT_SWITCH(
438            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
439               EXECUTING.REGISTERS'ADDRESS
440            ),
441            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
442               RTEMS_TEST_SUPPORT.THREAD_EXECUTING.REGISTERS'ADDRESS
443            )
444         );
445
446      -- switch to FLOATING_POINT_TASK_2
447
448   end FLOATING_POINT_TASK_1;
449
450--PAGE
451--
452--  FLOATING_POINT_TASK_2
453--
454
455   procedure FLOATING_POINT_TASK_2 (
456      ARGUMENT : in     RTEMS.TASK_ARGUMENT
457   ) is
458      EXECUTING           : RTEMS.TCB_POINTER;
459      FP_DECLARE;
460   begin
461
462      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
463     
464      TIME_TEST_SUPPORT.PUT_TIME(
465         "CONTEXT_SWITCH (init->init FP)",
466         TMTEST.END_TIME,
467         1,
468         0,
469         0
470      );
471
472      EXECUTING := RTEMS_TEST_SUPPORT.THREAD_EXECUTING;
473   
474      RTEMS_TEST_SUPPORT.THREAD_EXECUTING :=
475          RTEMS_TEST_SUPPORT.THREAD_TO_CONTROL_POINTER(
476             RTEMS_TEST_SUPPORT.CHAIN_NODE_POINTER_TO_ADDRESS(
477                RTEMS_TEST_SUPPORT.THREAD_READY_CHAIN( 201 ).FIRST
478             )
479          );
480
481      FP_LOAD( 1.0 );
482
483      -- do NOT force context switch
484
485      RTEMS_TEST_SUPPORT.CONTEXT_SWITCH_NECESSARY := FALSE;
486
487      RTEMS_TEST_SUPPORT.THREAD_DISABLE_DISPATCH;
488
489      TIMER_DRIVER.INITIALIZE;
490
491         RTEMS_TEST_SUPPORT.CONTEXT_SAVE_FP( EXECUTING.FP_CONTEXT'ADDRESS );
492         RTEMS_TEST_SUPPORT.CONTEXT_RESTORE_FP(
493            RTEMS_TEST_SUPPORT.THREAD_EXECUTING.FP_CONTEXT'ADDRESS
494         );
495         RTEMS_TEST_SUPPORT.CONTEXT_SWITCH(
496            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
497               EXECUTING.REGISTERS'ADDRESS
498            ),
499            RTEMS_TEST_SUPPORT.CONTEXT_TO_CONTROL_POINTER(
500               RTEMS_TEST_SUPPORT.THREAD_EXECUTING.REGISTERS'ADDRESS
501            )
502         );
503
504      -- switch to FLOATING_POINT_TASK_1
505
506      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
507     
508      TIME_TEST_SUPPORT.PUT_TIME(
509         "CONTEXT_SWITCH (used->used FP)",
510         TMTEST.END_TIME,
511         1,
512         0,
513         0
514      );
515
516      TMTEST.COMPLETE_TEST;
517
518      RTEMS.SHUTDOWN_EXECUTIVE( 0 );
519
520   end FLOATING_POINT_TASK_2;
521
522--PAGE
523--
524--  COMPLETE_TEST
525--
526
527   procedure COMPLETE_TEST
528   is
529      INDEX         : RTEMS.UNSIGNED32;
530      OVERHEAD      : RTEMS.UNSIGNED32;
531      TASK_ID       : RTEMS.ID;
532      LOCATION      : RTEMS_TEST_SUPPORT.OBJECTS_LOCATIONS;
533      THE_SEMAPHORE : RTEMS.TCB_POINTER;
534      THE_THREAD    : RTEMS.TCB_POINTER;
535   begin
536
537      TIMER_DRIVER.INITIALIZE;
538         RTEMS_TEST_SUPPORT.THREAD_RESUME( TMTEST.MIDDLE_TCB );
539      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
540     
541      TIME_TEST_SUPPORT.PUT_TIME(
542         "THREAD_RESUME",
543         TMTEST.END_TIME,
544         1,
545         0,
546         0
547      );
548
549      RTEMS_TEST_SUPPORT.THREAD_SET_STATE(
550         TMTEST.MIDDLE_TCB,
551         RTEMS.WAITING_FOR_MESSAGE
552      );
553
554      TIMER_DRIVER.INITIALIZE;
555         RTEMS_TEST_SUPPORT.THREAD_UNBLOCK( TMTEST.MIDDLE_TCB );
556      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
557     
558      TIME_TEST_SUPPORT.PUT_TIME(
559         "THREAD_UNBLOCK",
560         TMTEST.END_TIME,
561         1,
562         0,
563         0
564      );
565
566      RTEMS_TEST_SUPPORT.THREAD_SET_STATE(
567         TMTEST.MIDDLE_TCB,
568         RTEMS.WAITING_FOR_MESSAGE
569      );
570
571      TIMER_DRIVER.INITIALIZE;
572         RTEMS_TEST_SUPPORT.THREAD_READY( TMTEST.MIDDLE_TCB );
573      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
574     
575      TIME_TEST_SUPPORT.PUT_TIME(
576         "THREAD_READY",
577         TMTEST.END_TIME,
578         1,
579         0,
580         0
581      );
582
583      TIMER_DRIVER.INITIALIZE;
584         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
585         loop
586            TIMER_DRIVER.EMPTY_FUNCTION;
587         end loop;
588      OVERHEAD := TIMER_DRIVER.READ_TIMER;
589
590      TIMER_DRIVER.INITIALIZE;
591         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
592         loop
593            RTEMS_TEST_SUPPORT.THREAD_GET(
594               TASK_ID,
595               LOCATION,
596               THE_THREAD
597            );
598         end loop;
599      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
600     
601      TIME_TEST_SUPPORT.PUT_TIME(
602         "THREAD_GET",
603         TMTEST.END_TIME,
604         TIME_TEST_SUPPORT.OPERATION_COUNT,
605         0,
606         0
607      );
608
609--      TIMER_DRIVER.INITIALIZE;
610--         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
611--         loop
612--            RTEMS_TEST_SUPPORT.SEMAPHORE_GET(
613--               TMTEST.SEMAPHORE_ID,
614--               LOCATION,
615--               THE_SEMAPHORE
616--            );
617--         end loop;
618--      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
619     
620--      TIME_TEST_SUPPORT.PUT_TIME(
621--         "SEMAPHORE_GET",
622--         TMTEST.END_TIME,
623--         TIME_TEST_SUPPORT.OPERATION_COUNT,
624--         0,
625--         0
626--      );
627        TEXT_IO.PUT_LINE( "SEMAPHORE_GET NOT IN ADA" );
628
629      TIMER_DRIVER.INITIALIZE;
630         for INDEX in 1 .. TIME_TEST_SUPPORT.OPERATION_COUNT
631         loop
632            RTEMS_TEST_SUPPORT.THREAD_GET(
633               16#3#,
634               LOCATION,
635               THE_THREAD
636            );
637         end loop;
638      TMTEST.END_TIME := TIMER_DRIVER.READ_TIMER;
639     
640      TIME_TEST_SUPPORT.PUT_TIME(
641         "THREAD_GET (invalid id)",
642         TMTEST.END_TIME,
643         TIME_TEST_SUPPORT.OPERATION_COUNT,
644         0,
645         0
646      );
647
648   end COMPLETE_TEST;
649
650end TMTEST;
Note: See TracBrowser for help on using the repository browser.