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

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

ASP for EWARM のコミット.

File size: 5.8 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_rstr2.c 1887 2010-08-06 06:15:19Z ertl-hiro $
42 */
43
44/*
45 * §–ñƒ^ƒXƒN‚̃eƒXƒg(2)
46 *
47 * yƒeƒXƒg‚Ì–Ú“Iz
48 *
49 * ras_priƒT[ƒrƒXƒR[ƒ‹‚Ì“®ì‚ðƒeƒXƒg‚·‚éD
50 *
51 * yƒeƒXƒg€–ځz
52 *
53 * (A) §–ñƒ^ƒXƒN‚©‚çras_pri‚ðŒÄ‚яo‚µC—Dæ“x‚ðã‚°‚é
54 * (A-1) ƒfƒBƒXƒpƒbƒ`‹–‰Âó‘ԂŌĂяo‚µ‚½ê‡
55 * (A-2) ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘ԂŁCÅ‚—Dæ‡ˆÊƒ^ƒXƒN‚ªŽÀsó‘Ô‚Å‚È
56 * ‚¢ê‡‚ɌĂяo‚µ‚½ê‡
57 * (B) —Dæ“x‚ªã‚ª‚Á‚½§–ñƒ^ƒXƒN‚©‚çras_pri(TPRI_INI)‚ðŒÄ‚яo‚µC‹N“®
58 * Žž—Dæ“x‚É–ß‚·
59 * (B-1) ‹N“®Žž—Dæ“x‚æ‚è‚à‚‚¢—Dæ“x‚̃^ƒXƒN‚ªŽÀs‰Â”\‚̏ꍇ‚ɁC
60 * ƒ^ƒXƒNØŠ·‚¦‚ª‹N‚±‚邱‚Æ‚ðŠm”F‚·‚é
61 * (B-2) ‹N“®Žž—Dæ“x‚Æ“¯‚¶—Dæ“x‚̃^ƒXƒN‚ªŽÀs‰Â”\‚̏ꍇ‚ɁCƒ^ƒX
62 * ƒNØŠ·‚¦‚ª‹N‚±‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚é
63 * (B-3) ‹N“®Žž—Dæ“x‚æ‚è‚à’á‚¢—Dæ“x‚̃^ƒXƒN‚ªŽÀs‰Â”\‚̏ꍇ‚ɁC
64 * ƒ^ƒXƒNØŠ·‚¦‚ª‹N‚±‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚é
65 * (C) §–ñƒ^ƒXƒN‚©‚çras_pri‚ðŒÄ‚яo‚µC‹N“®Žž—Dæ“x‚æ‚è‚à’á‚¢—Dæ“x‚É
66 * •ÏX‚µ‚悤‚Æ‚·‚é‚ƁCE_ILUSE‚ɂȂ邱‚Æ‚ðŠm”F‚·‚é
67 *
68 * yŽg—pƒŠƒ\[ƒXz
69 *
70 * TASK1: ’†—Dæ“xƒ^ƒXƒNCƒƒCƒ“ƒ^ƒXƒNCÅ‰‚©‚ç‹N“®
71 * TASK2: ’†—Dæ“xƒ^ƒXƒNC§–ñƒ^ƒXƒN
72 * TASK3: ‚—Dæ“xƒ^ƒXƒN
73 *
74 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
75 *
76 * == TASK1i—Dæ“xF’†j==
77 * 1: act_tsk(TASK2)
78 * 2: slp_tsk()
79 * == TASK2i—Dæ“xF’†j==
80 * 3: get_pri(TSK_SELF, &tskpri)
81 * assert(tskpri == MID_PRIORITY)
82 * 4: ras_pri(HIGH_PRIORITY)
83 * 5: get_pri(TSK_SELF, &tskpri)
84 * assert(tskpri == HIGH_PRIORITY)
85 * 6: act_tsk(TASK3)
86 * 7: ras_pri(LOW_PRIORITY) -> E_ILUSE ... (C)
87 * 8: ras_pri(TPRI_INI) ... (B-1)
88 * == TASK3i—Dæ“xF‚j==
89 * 9: get_pri(TASK2, &tskpri)
90 * assert(tskpri == MID_PRIORITY)
91 * 10: slp_tsk()
92 * == TASK2i‘±‚«j==
93 * 11: dis_dsp()
94 * 12: wup_tsk(TASK3)
95 * 13: ras_pri(HIGH_PRIORITY) ... (A-2)
96 * 14: ena_dsp()
97 * 15: ras_pri(TPRI_INI) ... (B-3)
98 * == TASK3i‘±‚«j==
99 * 16: chg_pri(TSK_SELF, LOW_PRIORITY)
100 * == TASK2i‘±‚«j==
101 * 17: ras_pri(HIGH_PRIORITY)
102 * 18: wup_tsk(TASK1)
103 * 19: ras_pri(TPRI_INI) ... (B-2)
104 * 20: ext_tsk()
105 * == TASK1i‘±‚«j==
106 * 21: END
107 */
108
109#include <kernel.h>
110#include <test_lib.h>
111#include <t_syslog.h>
112#include "kernel_cfg.h"
113#include "test_rstr1.h"
114
115void
116task1(intptr_t exinf)
117{
118 ER ercd;
119
120 check_point(1);
121 ercd = act_tsk(TASK2);
122 check_ercd(ercd, E_OK);
123
124 check_point(2);
125 ercd = slp_tsk();
126 check_ercd(ercd, E_OK);
127
128 check_finish(21);
129
130 check_point(0);
131}
132
133void
134task2(intptr_t exinf)
135{
136 ER ercd;
137 PRI tskpri;
138
139 check_point(3);
140 ercd = get_pri(TSK_SELF, &tskpri);
141 check_ercd(ercd, E_OK);
142 check_assert(tskpri == MID_PRIORITY);
143
144 check_point(4);
145 ercd = ras_pri(HIGH_PRIORITY);
146 check_ercd(ercd, E_OK);
147
148 check_point(5);
149 ercd = get_pri(TSK_SELF, &tskpri);
150 check_ercd(ercd, E_OK);
151 check_assert(tskpri == HIGH_PRIORITY);
152
153 check_point(6);
154 ercd = act_tsk(TASK3);
155 check_ercd(ercd, E_OK);
156
157 check_point(7);
158 ercd = ras_pri(LOW_PRIORITY);
159 check_ercd(ercd, E_ILUSE);
160
161 check_point(8);
162 ercd = ras_pri(TPRI_INI);
163 check_ercd(ercd, E_OK);
164
165 check_point(11);
166 ercd = dis_dsp();
167 check_ercd(ercd, E_OK);
168
169 check_point(12);
170 ercd = wup_tsk(TASK3);
171 check_ercd(ercd, E_OK);
172
173 check_point(13);
174 ercd = ras_pri(HIGH_PRIORITY);
175 check_ercd(ercd, E_OK);
176
177 check_point(14);
178 ercd = ena_dsp();
179 check_ercd(ercd, E_OK);
180
181 check_point(15);
182 ercd = ras_pri(TPRI_INI);
183 check_ercd(ercd, E_OK);
184
185 check_point(17);
186 ercd = ras_pri(HIGH_PRIORITY);
187 check_ercd(ercd, E_OK);
188
189 check_point(18);
190 ercd = wup_tsk(TASK1);
191 check_ercd(ercd, E_OK);
192
193 check_point(19);
194 ercd = ras_pri(TPRI_INI);
195 check_ercd(ercd, E_OK);
196
197 check_point(20);
198 ercd = ext_tsk();
199 check_ercd(ercd, E_OK);
200
201 check_point(0);
202}
203
204void
205task3(intptr_t exinf)
206{
207 ER ercd;
208 PRI tskpri;
209
210 check_point(9);
211 ercd = get_pri(TASK2, &tskpri);
212 check_ercd(ercd, E_OK);
213 check_assert(tskpri == MID_PRIORITY);
214
215 check_point(10);
216 ercd = slp_tsk();
217 check_ercd(ercd, E_OK);
218
219 check_point(16);
220 ercd = chg_pri(TSK_SELF, LOW_PRIORITY);
221 check_ercd(ercd, E_OK);
222
223 check_point(0);
224}
Note: See TracBrowser for help on using the repository browser.