source: asp3_wo_tecs/trunk/test/test_task1.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: 10.2 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-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_task1.c 310 2015-02-08 13:46:46Z ertl-hiro $
53 */
54
55/*
56 * タスク管理モジュールのテスト(1)
57 *
58 * 【テストの目的】
59 *
60 * make_runnableとmake_non_runnableを網羅
61的にテストする.
62 *
63 * 【テスト項
64目】
65 *
66 * (A) 実行状æ…
67‹ã®ã‚¿ã‚¹ã‚¯ã‚ˆã‚Šã‚‚高い優å…
68ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’実行できる状æ…
69‹ã«ã™ã‚‹
70 * (A-1) ディスパッチ保留状æ…
71‹ã§ã¯ãªã„場合
72 * (A-2) ディスパッチ保留状æ…
73‹ã®å ´åˆ
74 * (B) 実行状æ…
75‹ã®ã‚¿ã‚¹ã‚¯ã¨åŒã˜å„ªå…
76ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’実行できる状æ…
77‹ã«ã™ã‚‹
78 * !同じ優å…
79ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã®ä¸­ã®æœ«å°¾ã«å…
80¥ã‚‹ã“とを確認する
81 * (C) 実行状æ…
82‹ã®ã‚¿ã‚¹ã‚¯ã‚ˆã‚Šã‚‚低い優å…
83ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’実行できる状æ…
84‹ã«ã™ã‚‹
85 * !同じ優å…
86ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã®ä¸­ã®æœ«å°¾ã«å…
87¥ã‚‹ã“とを確認する
88 * (D) 実行できる状æ…
89‹ã®ã‚¿ã‚¹ã‚¯ãŒãªã„状æ…
90‹ã§ï¼Œã‚¿ã‚¹ã‚¯ã‚’実行できる状æ…
91‹ã«ã™ã‚‹
92 * !この場合は,ディスパッチ保留状æ…
93‹ã§ã¯ãªã„
94 * (E) ディスパッチ保留状æ…
95‹ã§ï¼Œå®Ÿè¡ŒçŠ¶æ…
96‹ã«ãªã‚‹ã¹ãã ãŒå®Ÿè¡Œå¯èƒ½çŠ¶æ…
97‹ã‚¿ã‚¹
98 * クよりも高い優å…
99ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’,実行できる状æ…
100‹ã«ã™ã‚‹
101 * (F) ディスパッチ保留状æ…
102‹ã§ï¼Œå®Ÿè¡ŒçŠ¶æ…
103‹ã«ãªã‚‹ã¹ãã ãŒå®Ÿè¡Œå¯èƒ½çŠ¶æ…
104‹ã‚¿ã‚¹
105 * クと同じ優å…
106ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’,実行できる状æ…
107‹ã«ã™ã‚‹
108 * (G) ディスパッチ保留状æ…
109‹ã§ï¼Œå®Ÿè¡ŒçŠ¶æ…
110‹ã«ãªã‚‹ã¹ãã ãŒå®Ÿè¡Œå¯èƒ½çŠ¶æ…
111‹ã‚¿ã‚¹
112 * クよりも低い優å…
113ˆåº¦ã®ã‚¿ã‚¹ã‚¯ã‚’,実行できる状æ…
114‹ã«ã™ã‚‹
115 * (H) 実行状æ…
116‹ã®ã‚¿ã‚¹ã‚¯ã‚’,実行できる状æ…
117‹ã§ãªãã™
118 * (H-1) 実行できる状æ…
119‹ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‹å ´åˆ
120 * (H-2) 同一優å…
121ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‹å ´åˆ
122 * (H-3) 同一優å…
123ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‰ãªã„場合
124 * (I) 実行可能状æ…
125‹ã®ã‚¿ã‚¹ã‚¯ã‚’,実行できる状æ…
126‹ã§ãªãã™
127 * (I-1) 同一優å…
128ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‹å ´åˆ
129 * (I-2) 同一優å…
130ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‰ãªã„場合
131 * (J) ディスパッチ保留状æ…
132‹ã§ï¼Œå®Ÿè¡ŒçŠ¶æ…
133‹ã«ãªã‚‹ã¹ãã ãŒå®Ÿè¡Œå¯èƒ½çŠ¶æ…
134‹ã¨ãªã£
135 * ているタスクを,実行できる状æ…
136‹ã§ãªãã™
137 * (J-1) 同一優å…
138ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‹å ´åˆ
139 * (J-2) 同一優å…
140ˆåº¦ã®ã‚¿ã‚¹ã‚¯ãŒãªããªã‚‰ãªã„場合
141 * (K) ディスパッチ保留状æ…
142‹ã§ï¼Œå®Ÿè¡Œå¯èƒ½çŠ¶æ…
143‹ã«ãªã‚‹ã¹ãã ãŒå®Ÿè¡ŒçŠ¶æ…
144‹ã®ã‚¿
145 * スクを,実行できる状æ…
146‹ã§ãªãã™
147 * !ディスパッチ保留では,実行状æ…
148‹ã®ã‚¿ã‚¹ã‚¯ãŒå®Ÿè¡Œã§ãã‚‹çŠ¶æ…
149‹ã§ãªã
150 * なるような遷移を起こすことができないため,この状況は起こらない.
151 *
152 * 【使用リソース】
153 *
154 * TASK1: 中優å…
155ˆåº¦ã‚¿ã‚¹ã‚¯ï¼Œãƒ¡ã‚¤ãƒ³ã‚¿ã‚¹ã‚¯ï¼Œæœ€åˆã‹ã‚‰èµ·å‹•
156 * TASK2: 高優å…
157ˆåº¦ã‚¿ã‚¹ã‚¯
158 * TASK3: 中優å…
159ˆåº¦ã‚¿ã‚¹ã‚¯
160 * TASK4: 中優å…
161ˆåº¦ã‚¿ã‚¹ã‚¯
162 * TASK5: 低優å…
163ˆåº¦ã‚¿ã‚¹ã‚¯
164 * TASK6: 低優å…
165ˆåº¦ã‚¿ã‚¹ã‚¯
166 * ALM1: アラームハンドラ
167 *
168 * 【テストシーケンス】
169 *
170 * == TASK1(優å…
171ˆåº¦ï¼šä¸­ï¼‰==
172 * call(set_bit_func(bit_kernel))
173 * 1: act_tsk(TASK2) ... (A-1)
174 * == TASK2(優å…
175ˆåº¦ï¼šé«˜ï¼‰==
176 * 2: slp_tsk() ... (H-2)
177 * == TASK1(続き)==
178 * 3: act_tsk(TASK3) ... (B)
179 * 4: act_tsk(TASK4) ... (B)
180 * 5: slp_tsk() ... (H-3)
181 * == TASK3(優å…
182ˆåº¦ï¼šä¸­ï¼‰==
183 * 6: slp_tsk() ... (H-3)
184 * == TASK4(優å…
185ˆåº¦ï¼šä¸­ï¼‰==
186 * 7: wup_tsk(TASK1)
187 * 8: slp_tsk() ... (H-3)
188 * == TASK1(続き)==
189 * 9: act_tsk(TASK5) ... (C)
190 * 10: act_tsk(TASK6) ... (C)
191 * 11: sus_tsk(TASK6) ... (I-2)
192 * 12: sus_tsk(TASK5) ... (I-1)
193 * 13: rsm_tsk(TASK5) ... (C)
194 * 14: rsm_tsk(TASK6) ... (C)
195 * 15: slp_tsk() ... (H-2)
196 * == TASK5(優å…
197ˆåº¦ï¼šä½Žï¼‰==
198 * 16: slp_tsk() ... (H-3)
199 * == TASK6(優å…
200ˆåº¦ï¼šä½Žï¼‰==
201 * 17: dis_dsp()
202 * 18: wup_tsk(TASK1) ... (A-2)
203 * 19: wup_tsk(TASK2) ... (E)
204 * 20: sus_tsk(TASK2) ... (J-1)
205 * 21: wup_tsk(TASK3) ... (F)
206 * 22: wup_tsk(TASK4) ... (F)
207 * 23: sus_tsk(TASK1) ... (J-2)
208 * 24: ena_dsp()
209 * == TASK3(続き)==
210 * 25: slp_tsk() ... (H-3)
211 * == TASK4(続き)==
212 * 26: slp_tsk() ... (H-2)
213 * == TASK6(続き)==
214 * 27: dis_dsp()
215 * 28: rsm_tsk(TASK1) ... (A-2)
216 * 29: wup_tsk(TASK5) ... (G)
217 * 30: ena_dsp()
218 * == TASK1(続き)==
219 * 31: slp_tsk() ... (H-2)
220 * == TASK6(続き)==
221 * 32: slp_tsk() ... (H-3)
222 * == TASK5(続き)==
223 * 33: sta_alm(ALM1, 10000U)
224 * 34: slp_tsk() ... (H-1)
225 * == ALM1 ==
226 * 35: get_tid(&tskid)
227 * assert(tskid == TSK_NONE)
228 * 36: wup_tsk(TASK1) ... (D)
229 * 37: RETURN
230 * == TASK1(続き)==
231 * 38: END
232 */
233
234#include <kernel.h>
235#include <t_syslog.h>
236#include "syssvc/test_svc.h"
237#include "kernel_cfg.h"
238#include "test_task1.h"
239
240extern ER bit_kernel(void);
241
242/* DO NOT DELETE THIS LINE -- gentest depends on it. */
243
244void
245alarm1_handler(intptr_t exinf)
246{
247 ID tskid;
248 ER_UINT ercd;
249
250 check_point(35);
251 ercd = get_tid(&tskid);
252 check_ercd(ercd, E_OK);
253
254 check_assert(tskid == TSK_NONE);
255
256 check_point(36);
257 ercd = wup_tsk(TASK1);
258 check_ercd(ercd, E_OK);
259
260 check_point(37);
261 return;
262
263 check_point(0);
264}
265
266void
267task1(intptr_t exinf)
268{
269 ER_UINT ercd;
270
271 test_start(__FILE__);
272
273 set_bit_func(bit_kernel);
274
275 check_point(1);
276 ercd = act_tsk(TASK2);
277 check_ercd(ercd, E_OK);
278
279 check_point(3);
280 ercd = act_tsk(TASK3);
281 check_ercd(ercd, E_OK);
282
283 check_point(4);
284 ercd = act_tsk(TASK4);
285 check_ercd(ercd, E_OK);
286
287 check_point(5);
288 ercd = slp_tsk();
289 check_ercd(ercd, E_OK);
290
291 check_point(9);
292 ercd = act_tsk(TASK5);
293 check_ercd(ercd, E_OK);
294
295 check_point(10);
296 ercd = act_tsk(TASK6);
297 check_ercd(ercd, E_OK);
298
299 check_point(11);
300 ercd = sus_tsk(TASK6);
301 check_ercd(ercd, E_OK);
302
303 check_point(12);
304 ercd = sus_tsk(TASK5);
305 check_ercd(ercd, E_OK);
306
307 check_point(13);
308 ercd = rsm_tsk(TASK5);
309 check_ercd(ercd, E_OK);
310
311 check_point(14);
312 ercd = rsm_tsk(TASK6);
313 check_ercd(ercd, E_OK);
314
315 check_point(15);
316 ercd = slp_tsk();
317 check_ercd(ercd, E_OK);
318
319 check_point(31);
320 ercd = slp_tsk();
321 check_ercd(ercd, E_OK);
322
323 check_finish(38);
324 check_point(0);
325}
326
327void
328task2(intptr_t exinf)
329{
330 ER_UINT ercd;
331
332 check_point(2);
333 ercd = slp_tsk();
334 check_ercd(ercd, E_OK);
335
336 check_point(0);
337}
338
339void
340task3(intptr_t exinf)
341{
342 ER_UINT ercd;
343
344 check_point(6);
345 ercd = slp_tsk();
346 check_ercd(ercd, E_OK);
347
348 check_point(25);
349 ercd = slp_tsk();
350 check_ercd(ercd, E_OK);
351
352 check_point(0);
353}
354
355void
356task4(intptr_t exinf)
357{
358 ER_UINT ercd;
359
360 check_point(7);
361 ercd = wup_tsk(TASK1);
362 check_ercd(ercd, E_OK);
363
364 check_point(8);
365 ercd = slp_tsk();
366 check_ercd(ercd, E_OK);
367
368 check_point(26);
369 ercd = slp_tsk();
370 check_ercd(ercd, E_OK);
371
372 check_point(0);
373}
374
375void
376task5(intptr_t exinf)
377{
378 ER_UINT ercd;
379
380 check_point(16);
381 ercd = slp_tsk();
382 check_ercd(ercd, E_OK);
383
384 check_point(33);
385 ercd = sta_alm(ALM1, 10000U);
386 check_ercd(ercd, E_OK);
387
388 check_point(34);
389 ercd = slp_tsk();
390 check_ercd(ercd, E_OK);
391
392 check_point(0);
393}
394
395void
396task6(intptr_t exinf)
397{
398 ER_UINT ercd;
399
400 check_point(17);
401 ercd = dis_dsp();
402 check_ercd(ercd, E_OK);
403
404 check_point(18);
405 ercd = wup_tsk(TASK1);
406 check_ercd(ercd, E_OK);
407
408 check_point(19);
409 ercd = wup_tsk(TASK2);
410 check_ercd(ercd, E_OK);
411
412 check_point(20);
413 ercd = sus_tsk(TASK2);
414 check_ercd(ercd, E_OK);
415
416 check_point(21);
417 ercd = wup_tsk(TASK3);
418 check_ercd(ercd, E_OK);
419
420 check_point(22);
421 ercd = wup_tsk(TASK4);
422 check_ercd(ercd, E_OK);
423
424 check_point(23);
425 ercd = sus_tsk(TASK1);
426 check_ercd(ercd, E_OK);
427
428 check_point(24);
429 ercd = ena_dsp();
430 check_ercd(ercd, E_OK);
431
432 check_point(27);
433 ercd = dis_dsp();
434 check_ercd(ercd, E_OK);
435
436 check_point(28);
437 ercd = rsm_tsk(TASK1);
438 check_ercd(ercd, E_OK);
439
440 check_point(29);
441 ercd = wup_tsk(TASK5);
442 check_ercd(ercd, E_OK);
443
444 check_point(30);
445 ercd = ena_dsp();
446 check_ercd(ercd, E_OK);
447
448 check_point(32);
449 ercd = slp_tsk();
450 check_ercd(ercd, E_OK);
451
452 check_point(0);
453}
Note: See TracBrowser for help on using the repository browser.