source: asp_ewarm/asp-1.7.0/extension/rstr_task/test/test_rstr1.c@ 61

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

ASP for EWARM のコミット.

File size: 7.9 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2010 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_rstr1.c 1887 2010-08-06 06:15:19Z ertl-hiro $
42 */
43
44/*
45 * §–ñƒ^ƒXƒN‚̃eƒXƒg(1)
46 *
47 * yƒeƒXƒg‚Ì–Ú“Iz
48 *
49 * §–ñƒ^ƒXƒN‚ÌŠî–{“I‚ȐU•‘‚¢iras_priƒT[ƒrƒXƒR[ƒ‹ˆÈŠO‚Ì“®ìj‚ðƒeƒX
50 * ƒg‚·‚éD
51 *
52 * yƒeƒXƒg€–ځz
53 *
54 * (A) §–ñƒ^ƒXƒN‚ªCŽ©ƒ^ƒXƒN‚ð‘Ò‚¿ó‘Ô‚É‚·‚é‰Â”\«‚Ì‚ ‚éƒT[ƒrƒXƒR[
55 * ƒ‹‚ðŒÄ‚яo‚µ‚½ê‡CE_NOSPTƒGƒ‰[‚Æ‚È‚é
56 * (A-1) slp_tsk
57 * (A-2) tslp_tsk
58 * (A-3) dly_tsk
59 * ¦ ‘¼‚É‚à‚ ‚邪C‚±‚ꂾ‚¯‚É—¯‚ß‚é
60 * (B) §–ñƒ^ƒXƒN‚ð‘ΏۂƂµ‚āCchg_priCwup_tskCiwup_tskCcan_wupC
61 * rel_waiCirel_waiCsus_tskCrsm_tsk‚ðŒÄ‚яo‚µ‚½ê‡CE_NOSPTƒG
62 * ƒ‰[‚Æ‚È‚é
63 * (B-1) chg_pri
64 * (B-2) wup_tsk
65 * (B-3) iwup_tsk
66 * (B-4) can_wup
67 * (B-5) rel_wai
68 * (B-6) irel_wai
69 * (B-7) sus_tsk
70 * (B-8) rsm_tsk
71 * (C) rot_rdqCirot_rdq‚́C‘ΏۗDæ“x‚ðŽ‚ÂŽÀs‚Å‚«‚éó‘Ԃ̃^ƒXƒN‚Ì’†
72 * ‚ōłà—Dæ‡ˆÊ‚ª‚‚¢ƒ^ƒXƒN‚ª§–ñƒ^ƒXƒN‚Å‚ ‚éê‡CE_NOSPTƒGƒ‰[
73 * ‚Æ‚È‚é
74 * (C-1) rot_rdq‚ª³‚µ‚­“®ì‚·‚é
75 * (C-2) rot_rdq‚ªE_NOSPT‚ð•Ô‚·
76 * (C-3) irot_rdq‚ª³‚µ‚­“®ì‚·‚é
77 * (C-4) irot_rdq‚ªE_NOSPT‚ð•Ô‚·
78 *
79 * yŽg—pƒŠƒ\[ƒXz
80 *
81 * TASK1: ’†—Dæ“xƒ^ƒXƒNCƒƒCƒ“ƒ^ƒXƒNCÅ‰‚©‚ç‹N“®
82 * TASK2: ‚—Dæ“xƒ^ƒXƒNC§–ñƒ^ƒXƒN
83 * TASK3: ’†—Dæ“xƒ^ƒXƒNC§–ñƒ^ƒXƒN
84 * TASK4: ’†—Dæ“xƒ^ƒXƒNC§–ñƒ^ƒXƒN
85 * ALM1: ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
86 *
87 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
88 *
89 * == TASK1i—Dæ“xF’†j==
90 * 1: act_tsk(TASK2)
91 * == TASK2-1i—Dæ“xF‚j==
92 * 2: slp_tsk() -> E_NOSPT ... (A-1)
93 * 3: tslp_tsk(10) -> E_NOSPT ... (A-2)
94 * 4: dly_tsk(10) -> E_NOSPT ... (A-3)
95 * 5: ext_tsk()
96 * == TASK1i‘±‚«j==
97 * 6: chg_pri(TASK3, HIGH_PRIORITY) -> E_NOSPT ... (B-1)
98 * 7: wup_tsk(TASK3) -> E_NOSPT ... (B-2)
99 * 8: can_wup(TASK3) -> E_NOSPT ... (B-4)
100 * 9: rel_wai(TASK3) -> E_NOSPT ... (B-5)
101 * 10: sus_tsk(TASK3) -> E_NOSPT ... (B-7)
102 * 11: rsm_tsk(TASK3) -> E_NOSPT ... (B-8)
103 * 12: sta_alm(ALM1, 10)
104 * 13: slp_tsk()
105 * == ALM1 ==
106 * 14: iwup_tsk(TASK3) -> E_NOSPT ... (B-3)
107 * 15: irel_wai(TASK3) -> E_NOSPT ... (B-6)
108 * 16: iwup_tsk(TASK1)
109 * 17: iact_tsk(TASK3)
110 * 18: iact_tsk(TASK4)
111 * 19: irot_rdq(MID_PRIORITY) ... (C-3)
112 * 20: irot_rdq(MID_PRIORITY) -> E_NOSPT ... (C-4)
113 * 21: RETURN
114 * == TASK3-1i—Dæ“xF’†j==
115 * 22: act_tsk(TASK2)
116 * == TASK2-2i—Dæ“xF‚j2‰ñ‚ß ==
117 * 23: rot_rdq(MID_PRIORITY) -> E_NOSPT ... (C-2)
118 * 24: ext_tsk()
119 * == TASK3-1i‘±‚«j==
120 * 25: ext_tsk()
121 * == TASK4-1i—Dæ“xF’†j1‰ñ‚ß ==
122 * 26: ext_tsk()
123 * == TASK1i‘±‚«j==
124 * 27: act_tsk(TASK3)
125 * 28: act_tsk(TASK4)
126 * 29: act_tsk(TASK2)
127 * == TASK2-3i—Dæ“xF‚j3‰ñ‚ß ==
128 * 30: rot_rdq(MID_PRIORITY) ... (C-1)
129 * 31: ext_tsk()
130 * == TASK3-2i—Dæ“xF’†j2‰ñ‚ß ==
131 * 32: ext_tsk()
132 * == TASK4-2i—Dæ“xF’†j2‰ñ‚ß ==
133 * 33: ext_tsk()
134 * == TASK1i‘±‚«j==
135 * 34: END
136 */
137
138#include <kernel.h>
139#include <test_lib.h>
140#include <t_syslog.h>
141#include "kernel_cfg.h"
142#include "test_rstr1.h"
143
144void
145alarm1_handler(intptr_t exinf)
146{
147 ER ercd;
148
149 check_point(14);
150 ercd = iwup_tsk(TASK3);
151 check_ercd(ercd, E_NOSPT);
152
153 check_point(15);
154 ercd = irel_wai(TASK3);
155 check_ercd(ercd, E_NOSPT);
156
157 check_point(16);
158 ercd = iwup_tsk(TASK1);
159 check_ercd(ercd, E_OK);
160
161 check_point(17);
162 ercd = iact_tsk(TASK3);
163 check_ercd(ercd, E_OK);
164
165 check_point(18);
166 ercd = iact_tsk(TASK4);
167 check_ercd(ercd, E_OK);
168
169 check_point(19);
170 ercd = irot_rdq(MID_PRIORITY);
171 check_ercd(ercd, E_OK);
172
173 check_point(20);
174 ercd = irot_rdq(MID_PRIORITY);
175 check_ercd(ercd, E_NOSPT);
176
177 check_point(21);
178 return;
179
180 check_point(0);
181}
182
183void
184task1(intptr_t exinf)
185{
186 ER ercd;
187
188 check_point(1);
189 ercd = act_tsk(TASK2);
190 check_ercd(ercd, E_OK);
191
192 check_point(6);
193 ercd = chg_pri(TASK3, HIGH_PRIORITY);
194 check_ercd(ercd, E_NOSPT);
195
196 check_point(7);
197 ercd = wup_tsk(TASK3);
198 check_ercd(ercd, E_NOSPT);
199
200 check_point(8);
201 ercd = can_wup(TASK3);
202 check_ercd(ercd, E_NOSPT);
203
204 check_point(9);
205 ercd = rel_wai(TASK3);
206 check_ercd(ercd, E_NOSPT);
207
208 check_point(10);
209 ercd = sus_tsk(TASK3);
210 check_ercd(ercd, E_NOSPT);
211
212 check_point(11);
213 ercd = rsm_tsk(TASK3);
214 check_ercd(ercd, E_NOSPT);
215
216 check_point(12);
217 ercd = sta_alm(ALM1, 10);
218 check_ercd(ercd, E_OK);
219
220 check_point(13);
221 ercd = slp_tsk();
222 check_ercd(ercd, E_OK);
223
224 check_point(27);
225 ercd = act_tsk(TASK3);
226 check_ercd(ercd, E_OK);
227
228 check_point(28);
229 ercd = act_tsk(TASK4);
230 check_ercd(ercd, E_OK);
231
232 check_point(29);
233 ercd = act_tsk(TASK2);
234 check_ercd(ercd, E_OK);
235
236 check_finish(34);
237
238 check_point(0);
239}
240
241static uint_t task2_count = 0;
242
243void
244task2(intptr_t exinf)
245{
246 ER ercd;
247
248 switch (++task2_count) {
249 case 1:
250 check_point(2);
251 ercd = slp_tsk();
252 check_ercd(ercd, E_NOSPT);
253
254 check_point(3);
255 ercd = tslp_tsk(10);
256 check_ercd(ercd, E_NOSPT);
257
258 check_point(4);
259 ercd = dly_tsk(10);
260 check_ercd(ercd, E_NOSPT);
261
262 check_point(5);
263 ercd = ext_tsk();
264 check_ercd(ercd, E_OK);
265
266 check_point(0);
267
268 case 2:
269 check_point(23);
270 ercd = rot_rdq(MID_PRIORITY);
271 check_ercd(ercd, E_NOSPT);
272
273 check_point(24);
274 ercd = ext_tsk();
275 check_ercd(ercd, E_OK);
276
277 check_point(0);
278
279 case 3:
280 check_point(30);
281 ercd = rot_rdq(MID_PRIORITY);
282 check_ercd(ercd, E_OK);
283
284 check_point(31);
285 ercd = ext_tsk();
286 check_ercd(ercd, E_OK);
287
288 check_point(0);
289 }
290 check_point(0);
291}
292
293static uint_t task3_count = 0;
294
295void
296task3(intptr_t exinf)
297{
298 ER ercd;
299
300 switch (++task3_count) {
301 case 1:
302 check_point(22);
303 ercd = act_tsk(TASK2);
304 check_ercd(ercd, E_OK);
305
306 check_point(25);
307 ercd = ext_tsk();
308 check_ercd(ercd, E_OK);
309
310 check_point(0);
311
312 case 2:
313 check_point(32);
314 ercd = ext_tsk();
315 check_ercd(ercd, E_OK);
316
317 check_point(0);
318 }
319 check_point(0);
320}
321
322static uint_t task4_count = 0;
323
324void
325task4(intptr_t exinf)
326{
327 ER ercd;
328
329 switch (++task4_count) {
330 case 1:
331 check_point(26);
332 ercd = ext_tsk();
333 check_ercd(ercd, E_OK);
334
335 check_point(0);
336
337 case 2:
338 check_point(33);
339 ercd = ext_tsk();
340 check_ercd(ercd, E_OK);
341
342 check_point(0);
343 }
344 check_point(0);
345}
Note: See TracBrowser for help on using the repository browser.