source:
rtems/testsuites/tmtests/tm15/task1.c
@
95a81ab
Last change on this file since 95a81ab was 95a81ab, checked in by Joel Sherrill <joel.sherrill@…>, on 09/04/03 at 18:53:55 | |
---|---|
|
|
File size: 4.6 KB |
Line | |
---|---|
1 | /* |
2 | * |
3 | * COPYRIGHT (c) 1989-1999. |
4 | * On-Line Applications Research Corporation (OAR). |
5 | * |
6 | * The license and distribution terms for this file may be |
7 | * found in the file LICENSE in this distribution or at |
8 | * http://www.rtems.com/license/LICENSE. |
9 | * |
10 | * $Id$ |
11 | */ |
12 | |
13 | #define TEST_INIT |
14 | #include "system.h" |
15 | |
16 | rtems_unsigned32 time_set, eventout; |
17 | |
18 | rtems_task High_tasks( |
19 | rtems_task_argument argument |
20 | ); |
21 | |
22 | rtems_task Low_task( |
23 | rtems_task_argument argument |
24 | ); |
25 | |
26 | void test_init(); |
27 | |
28 | rtems_task Init( |
29 | rtems_task_argument argument |
30 | ) |
31 | { |
32 | rtems_status_code status; |
33 | |
34 | Print_Warning(); |
35 | |
36 | puts( "\n\n*** TIME TEST 15 ***" ); |
37 | |
38 | test_init(); |
39 | |
40 | status = rtems_task_delete( RTEMS_SELF ); |
41 | directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); |
42 | } |
43 | |
44 | void test_init() |
45 | { |
46 | rtems_id id; |
47 | rtems_unsigned32 index; |
48 | rtems_event_set event_out; |
49 | rtems_status_code status; |
50 | |
51 | time_set = FALSE; |
52 | |
53 | status = rtems_task_create( |
54 | rtems_build_name( 'L', 'O', 'W', ' ' ), |
55 | 10, |
56 | RTEMS_MINIMUM_STACK_SIZE, |
57 | RTEMS_NO_PREEMPT, |
58 | RTEMS_DEFAULT_ATTRIBUTES, |
59 | &id |
60 | ); |
61 | directive_failed( status, "rtems_task_create LOW" ); |
62 | |
63 | status = rtems_task_start( id, Low_task, 0 ); |
64 | directive_failed( status, "rtems_task_start LOW" ); |
65 | |
66 | for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) { |
67 | status = rtems_task_create( |
68 | rtems_build_name( 'H', 'I', 'G', 'H' ), |
69 | 5, |
70 | RTEMS_MINIMUM_STACK_SIZE, |
71 | RTEMS_DEFAULT_MODES, |
72 | RTEMS_DEFAULT_ATTRIBUTES, |
73 | &Task_id[ index ] |
74 | ); |
75 | directive_failed( status, "rtems_task_create LOOP" ); |
76 | |
77 | status = rtems_task_start( Task_id[ index ], High_tasks, 0 ); |
78 | directive_failed( status, "rtems_task_start LOOP" ); |
79 | } |
80 | |
81 | Timer_initialize(); |
82 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
83 | (void) Empty_function(); |
84 | overhead = Read_timer(); |
85 | |
86 | Timer_initialize(); |
87 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
88 | { |
89 | (void) rtems_event_receive( |
90 | RTEMS_PENDING_EVENTS, |
91 | RTEMS_DEFAULT_OPTIONS, |
92 | RTEMS_NO_TIMEOUT, |
93 | &event_out |
94 | ); |
95 | } |
96 | |
97 | end_time = Read_timer(); |
98 | |
99 | put_time( |
100 | "rtems_event_receive: obtain current events", |
101 | end_time, |
102 | OPERATION_COUNT, |
103 | overhead, |
104 | CALLING_OVERHEAD_EVENT_RECEIVE |
105 | ); |
106 | |
107 | |
108 | Timer_initialize(); |
109 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
110 | { |
111 | (void) rtems_event_receive( |
112 | RTEMS_ALL_EVENTS, |
113 | RTEMS_NO_WAIT, |
114 | RTEMS_NO_TIMEOUT, |
115 | &event_out |
116 | ); |
117 | } |
118 | end_time = Read_timer(); |
119 | |
120 | put_time( |
121 | "rtems_event_receive: not available -- NO_WAIT", |
122 | end_time, |
123 | OPERATION_COUNT, |
124 | overhead, |
125 | CALLING_OVERHEAD_EVENT_RECEIVE |
126 | ); |
127 | } |
128 | |
129 | rtems_task Low_task( |
130 | rtems_task_argument argument |
131 | ) |
132 | { |
133 | rtems_unsigned32 index; |
134 | rtems_event_set event_out; |
135 | |
136 | end_time = Read_timer(); |
137 | |
138 | put_time( |
139 | "rtems_event_receive: not available -- caller blocks", |
140 | end_time, |
141 | OPERATION_COUNT, |
142 | 0, |
143 | CALLING_OVERHEAD_EVENT_RECEIVE |
144 | ); |
145 | |
146 | Timer_initialize(); |
147 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
148 | (void) Empty_function(); |
149 | overhead = Read_timer(); |
150 | |
151 | Timer_initialize(); |
152 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
153 | (void) rtems_event_send( RTEMS_SELF, RTEMS_EVENT_16 ); |
154 | end_time = Read_timer(); |
155 | |
156 | put_time( |
157 | "rtems_event_send: no task readied", |
158 | end_time, |
159 | OPERATION_COUNT, |
160 | overhead, |
161 | CALLING_OVERHEAD_EVENT_SEND |
162 | ); |
163 | |
164 | Timer_initialize(); |
165 | (void) rtems_event_receive( |
166 | RTEMS_EVENT_16, |
167 | RTEMS_DEFAULT_OPTIONS, |
168 | RTEMS_NO_TIMEOUT, |
169 | &event_out |
170 | ); |
171 | end_time = Read_timer(); |
172 | |
173 | put_time( |
174 | "rtems_event_receive: available", |
175 | end_time, |
176 | 1, |
177 | 0, |
178 | CALLING_OVERHEAD_EVENT_RECEIVE |
179 | ); |
180 | |
181 | Timer_initialize(); |
182 | for ( index=1 ; index <= OPERATION_COUNT ; index++ ) |
183 | (void) rtems_event_send( Task_id[ index ], RTEMS_EVENT_16 ); |
184 | end_time = Read_timer(); |
185 | |
186 | put_time( |
187 | "rtems_event_send: task readied -- returns to caller", |
188 | end_time, |
189 | OPERATION_COUNT, |
190 | overhead, |
191 | CALLING_OVERHEAD_EVENT_SEND |
192 | ); |
193 | |
194 | puts( "*** END OF TEST 15 ***" ); |
195 | rtems_test_exit( 0 ); |
196 | } |
197 | |
198 | rtems_task High_tasks( |
199 | rtems_task_argument argument |
200 | ) |
201 | { |
202 | rtems_status_code status; |
203 | |
204 | if ( time_set ) |
205 | status = rtems_event_receive( |
206 | RTEMS_EVENT_16, |
207 | RTEMS_DEFAULT_OPTIONS, |
208 | RTEMS_NO_TIMEOUT, |
209 | &eventout |
210 | ); |
211 | else { |
212 | time_set = 1; |
213 | Timer_initialize(); /* start blocking rtems_event_receive time */ |
214 | status = rtems_event_receive( |
215 | RTEMS_EVENT_16, |
216 | RTEMS_DEFAULT_OPTIONS, |
217 | RTEMS_NO_TIMEOUT, |
218 | &eventout |
219 | ); |
220 | } |
221 | } |
Note: See TracBrowser
for help on using the repository browser.