source: asp3_wo_tecs/trunk/extension/subprio/test/test_subprio2.c@ 302

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

TECSレスのASP3の開発のため以下のtrunkからコピー
http://dev.toppers.jp/svn/asp3/branches/WO_TECS-3.C.0

File size: 6.3 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2014-2015 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * 上記著作権者
9は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
11 * 変・再é…
12å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15 * スコード中に含まれていること.
16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17 * 用できる形で再é…
18å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
19å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
20 * 者
21マニュアルなど)に,上記の著作権表示,この利用条件および下記
22 * の無保証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再é…
25å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
26 * と.
27 * (a) 再é…
28å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
29マニュアルなど)に,上記の著
30 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
31 * (b) 再é…
32å¸ƒã®å½¢æ…
33‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
34 * 報告すること.
35 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
36 * 害からも,上記著作権者
37およびTOPPERSプロジェクトをå…
38è²¬ã™ã‚‹ã“と.
39 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
40 * 由に基づく請求からも,上記著作権者
41およびTOPPERSプロジェクトを
42 * å…
43è²¬ã™ã‚‹ã“と.
44 *
45 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
46お
47 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
48 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
49 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
50 * の責任を負わない.
51 *
52 * $Id: test_subprio2.c 310 2015-02-08 13:46:46Z ertl-hiro $
53 */
54
55/*
56 * サブ優å…
57ˆåº¦æ©Ÿèƒ½ã®ãƒ†ã‚¹ãƒˆ(2)
58 *
59 * 【テストの目的】
60 *
61 * サブ優å…
62ˆåº¦ã‚’用いる優å…
63ˆåº¦ãŒ2つある場合をテストする.また,chg_sprが
64 * エラーに成るケースをテストする.
65 *
66 * 【テスト項
67目】
68 *
69 * (A) サブ優å…
70ˆåº¦ã‚’用いる優å…
71ˆåº¦ãŒENA_SPRにより複数設定できること
72 * (B) chg_sprがエラーになる場合
73 * (B-1) 非タスクコンテキストからの呼出し[NGKI3666]
74 * (B-2) CPUロック状æ…
75‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI3667ï¼½
76 * (B-3) 不正ID番号[NGKI3669]
77 *
78 * 【使用リソース】
79 *
80 * TASK1: 高優å…
81ˆåº¦ã‚¿ã‚¹ã‚¯ï¼Œãƒ¡ã‚¤ãƒ³ã‚¿ã‚¹ã‚¯ï¼Œæœ€åˆã‹ã‚‰èµ·å‹•
82 * TASK2: 中優å…
83ˆåº¦ã‚¿ã‚¹ã‚¯
84 * TASK3: 中優å…
85ˆåº¦ã‚¿ã‚¹ã‚¯
86 * TASK4: 低優å…
87ˆåº¦ã‚¿ã‚¹ã‚¯
88 * TASK5: 低優å…
89ˆåº¦ã‚¿ã‚¹ã‚¯
90 * 中優å…
91ˆåº¦ã¨ä½Žå„ªå…
92ˆåº¦ã‚’,サブ優å…
93ˆåº¦ã‚’使って優å…
94ˆé †ä½ã‚’決めるように設定
95 * ALM1: アラームハンドラ
96 *
97 * 【テストシーケンス】
98 *
99 * == TASK1(優å…
100ˆåº¦ï¼šé«˜ï¼‰==
101 * 1: chg_spr(TASK2, 10)
102 * chg_spr(TASK3, 5)
103 * chg_spr(TASK4, 10)
104 * chg_spr(TASK5, 5)
105 * act_tsk(TASK2)
106 * act_tsk(TASK3)
107 * act_tsk(TASK4)
108 * act_tsk(TASK5)
109 * slp_tsk()
110 * == TASK3(優å…
111ˆåº¦ï¼šä¸­ï¼‰==
112 * 2: ext_tsk()
113 * == TASK2(優å…
114ˆåº¦ï¼šä¸­ï¼‰==
115 * 3: ext_tsk()
116 * == TASK5(優å…
117ˆåº¦ï¼šä½Žï¼‰==
118 * 4: ext_tsk()
119 * == TASK4(優å…
120ˆåº¦ï¼šä½Žï¼‰==
121 * 5: wup_tsk(TASK1)
122 * == TASK1(続き)==
123 * 6: chg_spr(-1, 10) -> E_ID ... (B-3)
124 * chg_spr(TNUM_TSKID + 1, 10) -> E_ID ... (B-3)
125 * loc_cpu()
126 * chg_spr(TASK2, 10) -> E_CTX ... (B-2)
127 * unl_cpu()
128 * sta_alm(ALM1, 10000U)
129 * slp_tsk()
130 * == TASK4(続き)==
131 * 7: ext_tsk()
132 * == ALM1 ==
133 * 8: chg_spr(TASK2, 10) -> E_CTX ... (B-1)
134 * wup_tsk(TASK1)
135 * RETURN
136 * == TASK1(続き)==
137 * 9: END
138 */
139
140#include <kernel.h>
141#include <t_syslog.h>
142#include "syssvc/test_svc.h"
143#include "kernel_cfg.h"
144#include "test_subprio2.h"
145
146/* DO NOT DELETE THIS LINE -- gentest depends on it. */
147
148void
149alarm1_handler(intptr_t exinf)
150{
151 ER_UINT ercd;
152
153 check_point(8);
154 ercd = chg_spr(TASK2, 10);
155 check_ercd(ercd, E_CTX);
156
157 ercd = wup_tsk(TASK1);
158 check_ercd(ercd, E_OK);
159
160 return;
161
162 check_point(0);
163}
164
165void
166task1(intptr_t exinf)
167{
168 ER_UINT ercd;
169
170 test_start(__FILE__);
171
172 check_point(1);
173 ercd = chg_spr(TASK2, 10);
174 check_ercd(ercd, E_OK);
175
176 ercd = chg_spr(TASK3, 5);
177 check_ercd(ercd, E_OK);
178
179 ercd = chg_spr(TASK4, 10);
180 check_ercd(ercd, E_OK);
181
182 ercd = chg_spr(TASK5, 5);
183 check_ercd(ercd, E_OK);
184
185 ercd = act_tsk(TASK2);
186 check_ercd(ercd, E_OK);
187
188 ercd = act_tsk(TASK3);
189 check_ercd(ercd, E_OK);
190
191 ercd = act_tsk(TASK4);
192 check_ercd(ercd, E_OK);
193
194 ercd = act_tsk(TASK5);
195 check_ercd(ercd, E_OK);
196
197 ercd = slp_tsk();
198 check_ercd(ercd, E_OK);
199
200 check_point(6);
201 ercd = chg_spr(-1, 10);
202 check_ercd(ercd, E_ID);
203
204 ercd = chg_spr(TNUM_TSKID + 1, 10);
205 check_ercd(ercd, E_ID);
206
207 ercd = loc_cpu();
208 check_ercd(ercd, E_OK);
209
210 ercd = chg_spr(TASK2, 10);
211 check_ercd(ercd, E_CTX);
212
213 ercd = unl_cpu();
214 check_ercd(ercd, E_OK);
215
216 ercd = sta_alm(ALM1, 10000U);
217 check_ercd(ercd, E_OK);
218
219 ercd = slp_tsk();
220 check_ercd(ercd, E_OK);
221
222 check_finish(9);
223 check_point(0);
224}
225
226void
227task2(intptr_t exinf)
228{
229 ER_UINT ercd;
230
231 check_point(3);
232 ercd = ext_tsk();
233 check_ercd(ercd, E_OK);
234
235 check_point(0);
236}
237
238void
239task3(intptr_t exinf)
240{
241 ER_UINT ercd;
242
243 check_point(2);
244 ercd = ext_tsk();
245 check_ercd(ercd, E_OK);
246
247 check_point(0);
248}
249
250void
251task4(intptr_t exinf)
252{
253 ER_UINT ercd;
254
255 check_point(5);
256 ercd = wup_tsk(TASK1);
257 check_ercd(ercd, E_OK);
258
259 check_point(7);
260 ercd = ext_tsk();
261 check_ercd(ercd, E_OK);
262
263 check_point(0);
264}
265
266void
267task5(intptr_t exinf)
268{
269 ER_UINT ercd;
270
271 check_point(4);
272 ercd = ext_tsk();
273 check_ercd(ercd, E_OK);
274
275 check_point(0);
276}
Note: See TracBrowser for help on using the repository browser.