source: rtos_arduino/trunk/asp_1.9.2/test/test_task1.c@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 10.1 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-2013 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 2534 2013-10-13 12:27:37Z 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 * 1: act_tsk(TASK2) ... (A-1)
173 * == TASK2(優å…
174ˆåº¦ï¼šé«˜ï¼‰==
175 * 2: slp_tsk() ... (H-2)
176 * == TASK1(続き)==
177 * 3: act_tsk(TASK3) ... (B)
178 * 4: act_tsk(TASK4) ... (B)
179 * 5: slp_tsk() ... (H-3)
180 * == TASK3(優å…
181ˆåº¦ï¼šä¸­ï¼‰==
182 * 6: slp_tsk() ... (H-3)
183 * == TASK4(優å…
184ˆåº¦ï¼šä¸­ï¼‰==
185 * 7: wup_tsk(TASK1)
186 * 8: slp_tsk() ... (H-3)
187 * == TASK1(続き)==
188 * 9: act_tsk(TASK5) ... (C)
189 * 10: act_tsk(TASK6) ... (C)
190 * 11: sus_tsk(TASK6) ... (I-2)
191 * 12: sus_tsk(TASK5) ... (I-1)
192 * 13: rsm_tsk(TASK5) ... (C)
193 * 14: rsm_tsk(TASK6) ... (C)
194 * 15: slp_tsk() ... (H-2)
195 * == TASK5(優å…
196ˆåº¦ï¼šä½Žï¼‰==
197 * 16: slp_tsk() ... (H-3)
198 * == TASK6(優å…
199ˆåº¦ï¼šä½Žï¼‰==
200 * 17: dis_dsp()
201 * 18: wup_tsk(TASK1) ... (A-2)
202 * 19: wup_tsk(TASK2) ... (E)
203 * 20: sus_tsk(TASK2) ... (J-1)
204 * 21: wup_tsk(TASK3) ... (F)
205 * 22: wup_tsk(TASK4) ... (F)
206 * 23: sus_tsk(TASK1) ... (J-2)
207 * 24: ena_dsp()
208 * == TASK3(続き)==
209 * 25: slp_tsk() ... (H-3)
210 * == TASK4(続き)==
211 * 26: slp_tsk() ... (H-2)
212 * == TASK6(続き)==
213 * 27: dis_dsp()
214 * 28: rsm_tsk(TASK1) ... (A-2)
215 * 29: wup_tsk(TASK5) ... (G)
216 * 30: ena_dsp()
217 * == TASK1(続き)==
218 * 31: slp_tsk() ... (H-2)
219 * == TASK6(続き)==
220 * 32: slp_tsk() ... (H-3)
221 * == TASK5(続き)==
222 * 33: sta_alm(ALM1, 10)
223 * 34: slp_tsk() ... (H-1)
224 * == ALM1 ==
225 * 35: iget_tid(&tskid)
226 * assert(tskid == TSK_NONE)
227 * 36: iwup_tsk(TASK1) ... (D)
228 * 37: RETURN
229 * == TASK1(続き)==
230 * 38: END
231 */
232
233#include <kernel.h>
234#include <test_lib.h>
235#include <t_syslog.h>
236#include "kernel_cfg.h"
237#include "test_task1.h"
238
239/* DO NOT DELETE THIS LINE -- gentest depends on it. */
240
241void
242alarm1_handler(intptr_t exinf)
243{
244 ID tskid;
245 ER_UINT ercd;
246
247 check_point(35);
248 ercd = iget_tid(&tskid);
249 check_ercd(ercd, E_OK);
250
251 check_assert(tskid == TSK_NONE);
252
253 check_point(36);
254 ercd = iwup_tsk(TASK1);
255 check_ercd(ercd, E_OK);
256
257 check_point(37);
258 return;
259
260 check_point(0);
261}
262
263void
264task1(intptr_t exinf)
265{
266 ER_UINT ercd;
267
268 test_start(__FILE__);
269
270 check_point(1);
271 ercd = act_tsk(TASK2);
272 check_ercd(ercd, E_OK);
273
274 check_point(3);
275 ercd = act_tsk(TASK3);
276 check_ercd(ercd, E_OK);
277
278 check_point(4);
279 ercd = act_tsk(TASK4);
280 check_ercd(ercd, E_OK);
281
282 check_point(5);
283 ercd = slp_tsk();
284 check_ercd(ercd, E_OK);
285
286 check_point(9);
287 ercd = act_tsk(TASK5);
288 check_ercd(ercd, E_OK);
289
290 check_point(10);
291 ercd = act_tsk(TASK6);
292 check_ercd(ercd, E_OK);
293
294 check_point(11);
295 ercd = sus_tsk(TASK6);
296 check_ercd(ercd, E_OK);
297
298 check_point(12);
299 ercd = sus_tsk(TASK5);
300 check_ercd(ercd, E_OK);
301
302 check_point(13);
303 ercd = rsm_tsk(TASK5);
304 check_ercd(ercd, E_OK);
305
306 check_point(14);
307 ercd = rsm_tsk(TASK6);
308 check_ercd(ercd, E_OK);
309
310 check_point(15);
311 ercd = slp_tsk();
312 check_ercd(ercd, E_OK);
313
314 check_point(31);
315 ercd = slp_tsk();
316 check_ercd(ercd, E_OK);
317
318 check_finish(38);
319 check_point(0);
320}
321
322void
323task2(intptr_t exinf)
324{
325 ER_UINT ercd;
326
327 check_point(2);
328 ercd = slp_tsk();
329 check_ercd(ercd, E_OK);
330
331 check_point(0);
332}
333
334void
335task3(intptr_t exinf)
336{
337 ER_UINT ercd;
338
339 check_point(6);
340 ercd = slp_tsk();
341 check_ercd(ercd, E_OK);
342
343 check_point(25);
344 ercd = slp_tsk();
345 check_ercd(ercd, E_OK);
346
347 check_point(0);
348}
349
350void
351task4(intptr_t exinf)
352{
353 ER_UINT ercd;
354
355 check_point(7);
356 ercd = wup_tsk(TASK1);
357 check_ercd(ercd, E_OK);
358
359 check_point(8);
360 ercd = slp_tsk();
361 check_ercd(ercd, E_OK);
362
363 check_point(26);
364 ercd = slp_tsk();
365 check_ercd(ercd, E_OK);
366
367 check_point(0);
368}
369
370void
371task5(intptr_t exinf)
372{
373 ER_UINT ercd;
374
375 check_point(16);
376 ercd = slp_tsk();
377 check_ercd(ercd, E_OK);
378
379 check_point(33);
380 ercd = sta_alm(ALM1, 10);
381 check_ercd(ercd, E_OK);
382
383 check_point(34);
384 ercd = slp_tsk();
385 check_ercd(ercd, E_OK);
386
387 check_point(0);
388}
389
390void
391task6(intptr_t exinf)
392{
393 ER_UINT ercd;
394
395 check_point(17);
396 ercd = dis_dsp();
397 check_ercd(ercd, E_OK);
398
399 check_point(18);
400 ercd = wup_tsk(TASK1);
401 check_ercd(ercd, E_OK);
402
403 check_point(19);
404 ercd = wup_tsk(TASK2);
405 check_ercd(ercd, E_OK);
406
407 check_point(20);
408 ercd = sus_tsk(TASK2);
409 check_ercd(ercd, E_OK);
410
411 check_point(21);
412 ercd = wup_tsk(TASK3);
413 check_ercd(ercd, E_OK);
414
415 check_point(22);
416 ercd = wup_tsk(TASK4);
417 check_ercd(ercd, E_OK);
418
419 check_point(23);
420 ercd = sus_tsk(TASK1);
421 check_ercd(ercd, E_OK);
422
423 check_point(24);
424 ercd = ena_dsp();
425 check_ercd(ercd, E_OK);
426
427 check_point(27);
428 ercd = dis_dsp();
429 check_ercd(ercd, E_OK);
430
431 check_point(28);
432 ercd = rsm_tsk(TASK1);
433 check_ercd(ercd, E_OK);
434
435 check_point(29);
436 ercd = wup_tsk(TASK5);
437 check_ercd(ercd, E_OK);
438
439 check_point(30);
440 ercd = ena_dsp();
441 check_ercd(ercd, E_OK);
442
443 check_point(32);
444 ercd = slp_tsk();
445 check_ercd(ercd, E_OK);
446
447 check_point(0);
448}
Note: See TracBrowser for help on using the repository browser.