source: asp_ewarm/asp-1.7.0/test/test_task1.c@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 8.8 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-2009 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
9 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
10 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
11 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
12 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
13 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
14 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
15 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
16ƒƒ“ƒgi—˜—p
17 * ŽÒƒ}ƒjƒ…
18ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
19 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
20 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
21 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
22 * ‚ƁD
23 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
24ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
25ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
26 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
27 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
28 * •ñ‚·‚邱‚ƁD
29 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
30 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
31 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
32 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
33 * –Ɛӂ·‚邱‚ƁD
34 *
35 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
36 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
37 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
38 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
39 * ‚̐ӔC‚𕉂í‚È‚¢D
40 *
41 * @(#) $Id: test_task1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
42 */
43
44/*
45 * ƒ^ƒXƒNŠÇ—ƒ‚ƒWƒ…
46[ƒ‹‚̃eƒXƒg(1)
47 *
48 * yƒeƒXƒg‚Ì–Ú“Iz
49 *
50 * make_runnable‚Æmake_non_runnable‚ð–Ô—…
51“I‚ɃeƒXƒg‚·‚éD
52 *
53 * yƒeƒXƒg€–ځz
54 *
55 * (A) ŽÀsó‘Ԃ̃^ƒXƒN‚æ‚è‚à‚‚¢—Dæ“x‚̃^ƒXƒN‚ðŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
56 * (A-1) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚Å‚Í‚È‚¢ê‡
57 * (A-2) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ԃ̏ꍇ
58 * (B) ŽÀsó‘Ԃ̃^ƒXƒN‚Æ“¯‚¶—Dæ“x‚̃^ƒXƒN‚ðŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
59 * I“¯‚¶—Dæ“x‚̃^ƒXƒN‚Ì’†‚Ì––”ö‚É“ü‚邱‚Æ‚ðŠm”F‚·‚é
60 * (C) ŽÀsó‘Ԃ̃^ƒXƒN‚æ‚è‚à’á‚¢—Dæ“x‚̃^ƒXƒN‚ðŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
61 * I“¯‚¶—Dæ“x‚̃^ƒXƒN‚Ì’†‚Ì––”ö‚É“ü‚邱‚Æ‚ðŠm”F‚·‚é
62 * (D) ŽÀs‚Å‚«‚éó‘Ԃ̃^ƒXƒN‚ª‚È‚¢ó‘ԂŁCƒ^ƒXƒN‚ðŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
63 * I‚±‚̏ꍇ‚́CƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚Å‚Í‚È‚¢
64 * (E) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCŽÀsó‘Ô‚É‚È‚é‚ׂ«‚¾‚ªŽÀs‰Â”\ó‘Ôƒ^ƒX
65 * ƒN‚æ‚è‚à‚‚¢—Dæ“x‚̃^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
66 * (F) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCŽÀsó‘Ô‚É‚È‚é‚ׂ«‚¾‚ªŽÀs‰Â”\ó‘Ôƒ^ƒX
67 * ƒN‚Æ“¯‚¶—Dæ“x‚̃^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
68 * (G) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCŽÀsó‘Ô‚É‚È‚é‚ׂ«‚¾‚ªŽÀs‰Â”\ó‘Ôƒ^ƒX
69 * ƒN‚æ‚è‚à’á‚¢—Dæ“x‚̃^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚É‚·‚é
70 * (H) ŽÀsó‘Ԃ̃^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚Å‚È‚­‚·
71 * (H-1) ŽÀs‚Å‚«‚éó‘Ԃ̃^ƒXƒN‚ª‚È‚­‚È‚éê‡
72 * (H-2) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚éê‡
73 * (H-3) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚ç‚È‚¢ê‡
74 * (I) ŽÀs‰Â”\ó‘Ԃ̃^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚Å‚È‚­‚·
75 * (I-1) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚éê‡
76 * (I-2) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚ç‚È‚¢ê‡
77 * (J) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCŽÀsó‘Ô‚É‚È‚é‚ׂ«‚¾‚ªŽÀs‰Â”\ó‘Ô‚Æ‚È‚Á
78 * ‚Ä‚¢‚éƒ^ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚Å‚È‚­‚·
79 * (J-1) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚éê‡
80 * (J-2) “¯ˆê—Dæ“x‚̃^ƒXƒN‚ª‚È‚­‚È‚ç‚È‚¢ê‡
81 * (K) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCŽÀs‰Â”\ó‘Ô‚É‚È‚é‚ׂ«‚¾‚ªŽÀsó‘Ԃ̃^
82 * ƒXƒN‚ðCŽÀs‚Å‚«‚éó‘Ô‚Å‚È‚­‚·
83 * IƒfƒBƒXƒpƒbƒ`•Û—¯‚ł́CŽÀsó‘Ԃ̃^ƒXƒN‚ªŽÀs‚Å‚«‚éó‘Ô‚Å‚È‚­
84 * ‚È‚é‚悤‚È‘JˆÚ‚ð‹N‚±‚·‚±‚Æ‚ª‚Å‚«‚È‚¢‚½‚߁C‚±‚̏󋵂͋N‚±‚ç‚È‚¢D
85 *
86 * yŽg—pƒŠƒ\[ƒXz
87 *
88 * TASK1: ’†—Dæ“xƒ^ƒXƒNCƒƒCƒ“ƒ^ƒXƒNCÅ‰‚©‚ç‹N“®
89 * TASK2: ‚—Dæ“xƒ^ƒXƒN
90 * TASK3: ’†—Dæ“xƒ^ƒXƒN
91 * TASK4: ’†—Dæ“xƒ^ƒXƒN
92 * TASK5: ’á—Dæ“xƒ^ƒXƒN
93 * TASK6: ’á—Dæ“xƒ^ƒXƒN
94 * ALM1: ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
95 *
96 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
97 *
98 * == TASK1i—Dæ“xF’†j==
99 * 1: act_tsk(TASK2) ... (A-1)
100 * == TASK2i—Dæ“xF‚j==
101 * 2: slp_tsk() ... (H-2)
102 * == TASK1i‘±‚«j==
103 * 3: act_tsk(TASK3) ... (B)
104 * 4: act_tsk(TASK4) ... (B)
105 * 5: slp_tsk() ... (H-3)
106 * == TASK3i—Dæ“xF’†j==
107 * 6: slp_tsk() ... (H-3)
108 * == TASK4i—Dæ“xF’†j==
109 * 7: wup_tsk(TASK1)
110 * 8: slp_tsk() ... (H-3)
111 * == TASK1i‘±‚«j==
112 * 9: act_tsk(TASK5) ... (C)
113 * 10: act_tsk(TASK6) ... (C)
114 * 11: sus_tsk(TASK6) ... (I-2)
115 * 12: sus_tsk(TASK5) ... (I-1)
116 * 13: rsm_tsk(TASK5) ... (C)
117 * 14: rsm_tsk(TASK6) ... (C)
118 * 15: slp_tsk() ... (H-2)
119 * == TASK5i—Dæ“xF’áj==
120 * 16: slp_tsk() ... (H-3)
121 * == TASK6i—Dæ“xF’áj==
122 * 17: dis_dsp()
123 * 18: wup_tsk(TASK1) ... (A-2)
124 * 19: wup_tsk(TASK2) ... (E)
125 * 20: sus_tsk(TASK2) ... (J-1)
126 * 21: wup_tsk(TASK3) ... (F)
127 * 22: wup_tsk(TASK4) ... (F)
128 * 23: sus_tsk(TASK1) ... (J-2)
129 * 24: ena_dsp()
130 * == TASK3i‘±‚«j==
131 * 25: slp_tsk() ... (H-3)
132 * == TASK4i‘±‚«j==
133 * 26: slp_tsk() ... (H-2)
134 * == TASK6i‘±‚«j==
135 * 27: dis_dsp()
136 * 28: rsm_tsk(TASK1) ... (A-2)
137 * 29: wup_tsk(TASK5) ... (G)
138 * 30: ena_dsp()
139 * == TASK1i‘±‚«j==
140 * 31: slp_tsk() ... (H-2)
141 * == TASK6i‘±‚«j==
142 * 32: slp_tsk() ... (H-3)
143 * == TASK5i‘±‚«j==
144 * 33: sta_alm(ALM1, 10)
145 * 34: slp_tsk() ... (H-1)
146 * == ALM1 ==
147 * 35: iget_tid(&tskid)
148 * assert(tskid == TSK_NONE)
149 * 36: iwup_tsk(TASK1) ... (D)
150 * 37: RETURN
151 * == TASK1i‘±‚«j==
152 * 38: END
153 */
154
155#include <kernel.h>
156#include <test_lib.h>
157#include <t_syslog.h>
158#include "kernel_cfg.h"
159#include "test_task1.h"
160
161void
162alarm1_handler(intptr_t exinf)
163{
164 ER ercd;
165 ID tskid;
166
167 check_point(35);
168 ercd = iget_tid(&tskid);
169 check_ercd(ercd, E_OK);
170 check_assert(tskid == TSK_NONE);
171
172 check_point(36);
173 ercd = iwup_tsk(TASK1);
174 check_ercd(ercd, E_OK);
175
176 check_point(37);
177 return;
178
179 check_point(0);
180}
181
182void
183task1(intptr_t exinf)
184{
185 ER ercd;
186
187 check_point(1);
188 ercd = act_tsk(TASK2);
189 check_ercd(ercd, E_OK);
190
191 check_point(3);
192 ercd = act_tsk(TASK3);
193 check_ercd(ercd, E_OK);
194
195 check_point(4);
196 ercd = act_tsk(TASK4);
197 check_ercd(ercd, E_OK);
198
199 check_point(5);
200 ercd = slp_tsk();
201 check_ercd(ercd, E_OK);
202
203 check_point(9);
204 ercd = act_tsk(TASK5);
205 check_ercd(ercd, E_OK);
206
207 check_point(10);
208 ercd = act_tsk(TASK6);
209 check_ercd(ercd, E_OK);
210
211 check_point(11);
212 ercd = sus_tsk(TASK6);
213 check_ercd(ercd, E_OK);
214
215 check_point(12);
216 ercd = sus_tsk(TASK5);
217 check_ercd(ercd, E_OK);
218
219 check_point(13);
220 ercd = rsm_tsk(TASK5);
221 check_ercd(ercd, E_OK);
222
223 check_point(14);
224 ercd = rsm_tsk(TASK6);
225 check_ercd(ercd, E_OK);
226
227 check_point(15);
228 ercd = slp_tsk();
229 check_ercd(ercd, E_OK);
230
231 check_point(31);
232 ercd = slp_tsk();
233 check_ercd(ercd, E_OK);
234
235 check_finish(38);
236
237 check_point(0);
238}
239
240void
241task2(intptr_t exinf)
242{
243 ER ercd;
244
245 check_point(2);
246 ercd = slp_tsk();
247 check_ercd(ercd, E_OK);
248
249 check_point(0);
250}
251
252void
253task3(intptr_t exinf)
254{
255 ER ercd;
256
257 check_point(6);
258 ercd = slp_tsk();
259 check_ercd(ercd, E_OK);
260
261 check_point(25);
262 ercd = slp_tsk();
263 check_ercd(ercd, E_OK);
264
265 check_point(0);
266}
267
268void
269task4(intptr_t exinf)
270{
271 ER ercd;
272
273 check_point(7);
274 ercd = wup_tsk(TASK1);
275 check_ercd(ercd, E_OK);
276
277 check_point(8);
278 ercd = slp_tsk();
279 check_ercd(ercd, E_OK);
280
281 check_point(26);
282 ercd = slp_tsk();
283 check_ercd(ercd, E_OK);
284
285 check_point(0);
286}
287
288void
289task5(intptr_t exinf)
290{
291 ER ercd;
292
293 check_point(16);
294 ercd = slp_tsk();
295 check_ercd(ercd, E_OK);
296
297 check_point(33);
298 ercd = sta_alm(ALM1, 10);
299 check_ercd(ercd, E_OK);
300
301 check_point(34);
302 ercd = slp_tsk();
303 check_ercd(ercd, E_OK);
304
305 check_point(0);
306}
307
308void
309task6(intptr_t exinf)
310{
311 ER ercd;
312
313 check_point(17);
314 ercd = dis_dsp();
315 check_ercd(ercd, E_OK);
316
317 check_point(18);
318 ercd = wup_tsk(TASK1);
319 check_ercd(ercd, E_OK);
320
321 check_point(19);
322 ercd = wup_tsk(TASK2);
323 check_ercd(ercd, E_OK);
324
325 check_point(20);
326 ercd = sus_tsk(TASK2);
327 check_ercd(ercd, E_OK);
328
329 check_point(21);
330 ercd = wup_tsk(TASK3);
331 check_ercd(ercd, E_OK);
332
333 check_point(22);
334 ercd = wup_tsk(TASK4);
335 check_ercd(ercd, E_OK);
336
337 check_point(23);
338 ercd = sus_tsk(TASK1);
339 check_ercd(ercd, E_OK);
340
341 check_point(24);
342 ercd = ena_dsp();
343 check_ercd(ercd, E_OK);
344
345 check_point(27);
346 ercd = dis_dsp();
347 check_ercd(ercd, E_OK);
348
349 check_point(28);
350 ercd = rsm_tsk(TASK1);
351 check_ercd(ercd, E_OK);
352
353 check_point(29);
354 ercd = wup_tsk(TASK5);
355 check_ercd(ercd, E_OK);
356
357 check_point(30);
358 ercd = ena_dsp();
359 check_ercd(ercd, E_OK);
360
361 check_point(32);
362 ercd = slp_tsk();
363 check_ercd(ercd, E_OK);
364
365 check_point(0);
366}
Note: See TracBrowser for help on using the repository browser.