source: asp3_wo_tecs/trunk/test/test_sysman1.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: 12.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_sysman1.c 310 2015-02-08 13:46:46Z ertl-hiro $
53 */
54
55/*
56 * システム状æ…
57‹ç®¡ç†æ©Ÿèƒ½ã®ãƒ†ã‚¹ãƒˆ(1)
58 *
59 * 【テストの目的】
60 *
61 * get_lodとget_nthを網羅
62的にテストする.
63 *
64 * 【テスト項
65目】
66 *
67 * (A) get_lodの静的エラーのテスト
68 * (A-1) 非タスクコンテキストからの呼出し … 未実施
69 * (A-2) CPUロック状æ…
70‹ã‹ã‚‰ã®å‘¼å‡ºã— … 未実施
71 * (A-3) tskpriが不正(小さすぎる)
72 * (A-4) tskpriが不正(大きすぎる)
73 * (B) get_lodにå…
74·ä½“的な優å…
75ˆåº¦ã‚’指定し,タスク数が返される
76 * (B-1) タスク数が0の場合
77 * (B-2) タスク数が1の場合
78 * (B-3) タスク数が3の場合
79 * (C) get_lodにTSK_SELFを指定し,タスク数が返される
80 * (C-1) 優å…
81ˆåº¦ãŒå¤‰æ›´ã•ã‚Œã¦ã„ないタスクからの発行
82 * (C-2) 優å…
83ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックして,現在優å…
84ˆåº¦ãŒä¸ŠãŒã£
85 * たタスクからの発行
86 * (C-3) chg_priにより,ベース優å…
87ˆåº¦ãŒä¸ŠãŒã£ãŸã‚¿ã‚¹ã‚¯ã‹ã‚‰ã®ç™ºè¡Œ
88 * (D) get_nthの静的エラーのテスト
89 * (D-1) 非タスクコンテキストからの呼出し … 未実施
90 * (D-2) CPUロック状æ…
91‹ã‹ã‚‰ã®å‘¼å‡ºã— … 未実施
92 * (D-3) tskpriが不正(小さすぎる)
93 * (D-4) tskpriが不正(大きすぎる)
94 * (E) get_nthにå…
95·ä½“的な優å…
96ˆåº¦ã‚’指定し,タスクIDまたはTSK_NONEが返される
97 * (E-1) タスク数が0で,0番目に対して,TSK_NONEが返る場合
98 * (E-2) タスク数が1で,0番目に対して,タスクIDが返る場合
99 * (E-3) タスク数が1で,1番目に対して,TSK_NONEが返る場合
100 * (E-4) タスク数が3で,0番目に対して,タスクIDが返る場合
101 * (E-5) タスク数が3で,2番目に対して,タスクIDが返る場合
102 * (E-6) タスク数が3で,3番目に対して,TSK_NONEが返る場合
103 * (F) get_nthにTSK_SELFを指定し,タスクIDまたはTSK_NONEが返される
104 * (F-1) 優å…
105ˆåº¦ãŒå¤‰æ›´ã•ã‚Œã¦ã„ないタスクからの発行
106 * (F-2) 優å…
107ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’ロックして,現在優å…
108ˆåº¦ãŒä¸ŠãŒã£
109 * たタスクからの発行
110 * (F-3) chg_priにより,ベース優å…
111ˆåº¦ãŒä¸ŠãŒã£ãŸã‚¿ã‚¹ã‚¯ã‹ã‚‰ã®ç™ºè¡Œ
112 *
113 * 【使用リソース】
114 *
115 * TASK1: 高優å…
116ˆåº¦ã‚¿ã‚¹ã‚¯ï¼Œãƒ¡ã‚¤ãƒ³ã‚¿ã‚¹ã‚¯ï¼Œæœ€åˆã‹ã‚‰èµ·å‹•
117 * TASK2: 中優å…
118ˆåº¦ã‚¿ã‚¹ã‚¯
119 * TASK3: 中優å…
120ˆåº¦ã‚¿ã‚¹ã‚¯
121 * TASK4: 中優å…
122ˆåº¦ã‚¿ã‚¹ã‚¯
123 * TASK5: 低優å…
124ˆåº¦ã‚¿ã‚¹ã‚¯
125 * MTX1: ミューテックス(TA_CEILING属性,上限は中優å…
126ˆåº¦ï¼‰
127 *
128 * 【テストシーケンス】
129 *
130 * == TASK1(優å…
131ˆåº¦ï¼šé«˜ï¼‰==
132 * 1: get_lod(TMIN_TPRI-2, &load) -> E_PAR ... (A-3)
133 * get_lod(TMAX_TPRI+1, &load) -> E_PAR ... (A-4)
134 * get_nth(TMIN_TPRI-2, 0U, &tskid) -> E_PAR ... (D-3)
135 * get_nth(TMAX_TPRI+1, 0U, &tskid) -> E_PAR ... (D-4)
136 * 2: get_lod(MID_PRIORITY, &load) ... (B-1)
137 * assert(load == 0U)
138 * get_nth(MID_PRIORITY, 0U, &tskid) ... (E-1)
139 * assert(tskid == TSK_NONE)
140 * 3: act_tsk(TASK2)
141 * get_lod(MID_PRIORITY, &load) ... (B-2)
142 * assert(load == 1U)
143 * get_nth(MID_PRIORITY, 0U, &tskid) ... (E-2)
144 * assert(tskid == TASK2)
145 * get_nth(MID_PRIORITY, 1U, &tskid) ... (E-3)
146 * assert(tskid == TSK_NONE)
147 * 4: act_tsk(TASK3)
148 * act_tsk(TASK4)
149 * get_lod(MID_PRIORITY, &load) ... (B-3)
150 * assert(load == 3U)
151 * get_nth(MID_PRIORITY, 0U, &tskid) ... (E-4)
152 * assert(tskid == TASK2)
153 * get_nth(MID_PRIORITY, 1U, &tskid)
154 * assert(tskid == TASK3)
155 * get_nth(MID_PRIORITY, 2U, &tskid) ... (E-5)
156 * assert(tskid == TASK4)
157 * get_nth(MID_PRIORITY, 3U, &tskid) ... (E-6)
158 * assert(tskid == TSK_NONE)
159 * 5: act_tsk(TASK5)
160 * get_lod(MID_PRIORITY, &load)
161 * assert(load == 3U)
162 * 6: slp_tsk()
163 * == TASK2(優å…
164ˆåº¦ï¼šä¸­ï¼‰==
165 * 7: get_lod(TPRI_SELF, &load)
166 * assert(load == 3U)
167 * get_nth(TPRI_SELF, 0U, &tskid)
168 * assert(tskid == TASK2)
169 * 8: slp_tsk()
170 * == TASK3(優å…
171ˆåº¦ï¼šä¸­ï¼‰==
172 * 9: get_lod(TPRI_SELF, &load)
173 * assert(load == 2U)
174 * get_nth(TPRI_SELF, 0U, &tskid)
175 * assert(tskid == TASK3)
176 * 10: slp_tsk()
177 * == TASK4(優å…
178ˆåº¦ï¼šä¸­ï¼‰==
179 * 11: get_lod(TPRI_SELF, &load)
180 * assert(load == 1U)
181 * get_nth(TPRI_SELF, 0U, &tskid)
182 * assert(tskid == TASK4)
183 * 12: slp_tsk()
184 * == TASK5(優å…
185ˆåº¦ï¼šä½Žï¼‰==
186 * 13: get_lod(TPRI_SELF, &load) ... (C-1)
187 * assert(load == 1U)
188 * get_nth(TPRI_SELF, 0U, &tskid) ... (F-1)
189 * assert(tskid == TASK5)
190 * 14: loc_mtx(MTX1)
191 * get_lod(TPRI_SELF, &load) ... (C-2)
192 * assert(load == 0U)
193 * get_nth(TPRI_SELF, 0U, &tskid) ... (F-2)
194 * assert(tskid == TSK_NONE)
195 * get_lod(MID_PRIORITY, &load)
196 * assert(load == 1U)
197 * get_nth(MID_PRIORITY, 0U, &tskid)
198 * assert(tskid == TASK5)
199 * 15: wup_tsk(TASK2)
200 * get_lod(TPRI_SELF, &load)
201 * assert(load == 0U)
202 * get_lod(MID_PRIORITY, &load)
203 * assert(load == 2U)
204 * 16: unl_mtx(MTX1)
205 * == TASK2(続き)==
206 * 17: get_lod(TPRI_SELF, &load)
207 * assert(load == 1U)
208 * 18: chg_pri(TASK5, MID_PRIORITY)
209 * get_lod(TPRI_SELF, &load)
210 * assert(load == 2U)
211 * rot_rdq(TPRI_SELF)
212 * == TASK5(続き)==
213 * 19: get_lod(TPRI_SELF, &load) ... (C-3)
214 * assert(load == 2U)
215 * get_nth(TPRI_SELF, 0U, &tskid) ... (F-3)
216 * assert(tskid == TASK5)
217 * 20: END
218 */
219
220#include <kernel.h>
221#include <t_syslog.h>
222#include "syssvc/test_svc.h"
223#include "kernel_cfg.h"
224#include "test_sysman1.h"
225
226/* DO NOT DELETE THIS LINE -- gentest depends on it. */
227
228void
229task1(intptr_t exinf)
230{
231 ID tskid;
232 ER_UINT ercd;
233 uint_t load;
234
235 test_start(__FILE__);
236
237 check_point(1);
238 ercd = get_lod(TMIN_TPRI-2, &load);
239 check_ercd(ercd, E_PAR);
240
241 ercd = get_lod(TMAX_TPRI+1, &load);
242 check_ercd(ercd, E_PAR);
243
244 ercd = get_nth(TMIN_TPRI-2, 0U, &tskid);
245 check_ercd(ercd, E_PAR);
246
247 ercd = get_nth(TMAX_TPRI+1, 0U, &tskid);
248 check_ercd(ercd, E_PAR);
249
250 check_point(2);
251 ercd = get_lod(MID_PRIORITY, &load);
252 check_ercd(ercd, E_OK);
253
254 check_assert(load == 0U);
255
256 ercd = get_nth(MID_PRIORITY, 0U, &tskid);
257 check_ercd(ercd, E_OK);
258
259 check_assert(tskid == TSK_NONE);
260
261 check_point(3);
262 ercd = act_tsk(TASK2);
263 check_ercd(ercd, E_OK);
264
265 ercd = get_lod(MID_PRIORITY, &load);
266 check_ercd(ercd, E_OK);
267
268 check_assert(load == 1U);
269
270 ercd = get_nth(MID_PRIORITY, 0U, &tskid);
271 check_ercd(ercd, E_OK);
272
273 check_assert(tskid == TASK2);
274
275 ercd = get_nth(MID_PRIORITY, 1U, &tskid);
276 check_ercd(ercd, E_OK);
277
278 check_assert(tskid == TSK_NONE);
279
280 check_point(4);
281 ercd = act_tsk(TASK3);
282 check_ercd(ercd, E_OK);
283
284 ercd = act_tsk(TASK4);
285 check_ercd(ercd, E_OK);
286
287 ercd = get_lod(MID_PRIORITY, &load);
288 check_ercd(ercd, E_OK);
289
290 check_assert(load == 3U);
291
292 ercd = get_nth(MID_PRIORITY, 0U, &tskid);
293 check_ercd(ercd, E_OK);
294
295 check_assert(tskid == TASK2);
296
297 ercd = get_nth(MID_PRIORITY, 1U, &tskid);
298 check_ercd(ercd, E_OK);
299
300 check_assert(tskid == TASK3);
301
302 ercd = get_nth(MID_PRIORITY, 2U, &tskid);
303 check_ercd(ercd, E_OK);
304
305 check_assert(tskid == TASK4);
306
307 ercd = get_nth(MID_PRIORITY, 3U, &tskid);
308 check_ercd(ercd, E_OK);
309
310 check_assert(tskid == TSK_NONE);
311
312 check_point(5);
313 ercd = act_tsk(TASK5);
314 check_ercd(ercd, E_OK);
315
316 ercd = get_lod(MID_PRIORITY, &load);
317 check_ercd(ercd, E_OK);
318
319 check_assert(load == 3U);
320
321 check_point(6);
322 ercd = slp_tsk();
323 check_ercd(ercd, E_OK);
324
325 check_point(0);
326}
327
328void
329task2(intptr_t exinf)
330{
331 ID tskid;
332 ER_UINT ercd;
333 uint_t load;
334
335 check_point(7);
336 ercd = get_lod(TPRI_SELF, &load);
337 check_ercd(ercd, E_OK);
338
339 check_assert(load == 3U);
340
341 ercd = get_nth(TPRI_SELF, 0U, &tskid);
342 check_ercd(ercd, E_OK);
343
344 check_assert(tskid == TASK2);
345
346 check_point(8);
347 ercd = slp_tsk();
348 check_ercd(ercd, E_OK);
349
350 check_point(17);
351 ercd = get_lod(TPRI_SELF, &load);
352 check_ercd(ercd, E_OK);
353
354 check_assert(load == 1U);
355
356 check_point(18);
357 ercd = chg_pri(TASK5, MID_PRIORITY);
358 check_ercd(ercd, E_OK);
359
360 ercd = get_lod(TPRI_SELF, &load);
361 check_ercd(ercd, E_OK);
362
363 check_assert(load == 2U);
364
365 ercd = rot_rdq(TPRI_SELF);
366 check_ercd(ercd, E_OK);
367
368 check_point(0);
369}
370
371void
372task3(intptr_t exinf)
373{
374 ID tskid;
375 ER_UINT ercd;
376 uint_t load;
377
378 check_point(9);
379 ercd = get_lod(TPRI_SELF, &load);
380 check_ercd(ercd, E_OK);
381
382 check_assert(load == 2U);
383
384 ercd = get_nth(TPRI_SELF, 0U, &tskid);
385 check_ercd(ercd, E_OK);
386
387 check_assert(tskid == TASK3);
388
389 check_point(10);
390 ercd = slp_tsk();
391 check_ercd(ercd, E_OK);
392
393 check_point(0);
394}
395
396void
397task4(intptr_t exinf)
398{
399 ID tskid;
400 ER_UINT ercd;
401 uint_t load;
402
403 check_point(11);
404 ercd = get_lod(TPRI_SELF, &load);
405 check_ercd(ercd, E_OK);
406
407 check_assert(load == 1U);
408
409 ercd = get_nth(TPRI_SELF, 0U, &tskid);
410 check_ercd(ercd, E_OK);
411
412 check_assert(tskid == TASK4);
413
414 check_point(12);
415 ercd = slp_tsk();
416 check_ercd(ercd, E_OK);
417
418 check_point(0);
419}
420
421void
422task5(intptr_t exinf)
423{
424 ID tskid;
425 ER_UINT ercd;
426 uint_t load;
427
428 check_point(13);
429 ercd = get_lod(TPRI_SELF, &load);
430 check_ercd(ercd, E_OK);
431
432 check_assert(load == 1U);
433
434 ercd = get_nth(TPRI_SELF, 0U, &tskid);
435 check_ercd(ercd, E_OK);
436
437 check_assert(tskid == TASK5);
438
439 check_point(14);
440 ercd = loc_mtx(MTX1);
441 check_ercd(ercd, E_OK);
442
443 ercd = get_lod(TPRI_SELF, &load);
444 check_ercd(ercd, E_OK);
445
446 check_assert(load == 0U);
447
448 ercd = get_nth(TPRI_SELF, 0U, &tskid);
449 check_ercd(ercd, E_OK);
450
451 check_assert(tskid == TSK_NONE);
452
453 ercd = get_lod(MID_PRIORITY, &load);
454 check_ercd(ercd, E_OK);
455
456 check_assert(load == 1U);
457
458 ercd = get_nth(MID_PRIORITY, 0U, &tskid);
459 check_ercd(ercd, E_OK);
460
461 check_assert(tskid == TASK5);
462
463 check_point(15);
464 ercd = wup_tsk(TASK2);
465 check_ercd(ercd, E_OK);
466
467 ercd = get_lod(TPRI_SELF, &load);
468 check_ercd(ercd, E_OK);
469
470 check_assert(load == 0U);
471
472 ercd = get_lod(MID_PRIORITY, &load);
473 check_ercd(ercd, E_OK);
474
475 check_assert(load == 2U);
476
477 check_point(16);
478 ercd = unl_mtx(MTX1);
479 check_ercd(ercd, E_OK);
480
481 check_point(19);
482 ercd = get_lod(TPRI_SELF, &load);
483 check_ercd(ercd, E_OK);
484
485 check_assert(load == 2U);
486
487 ercd = get_nth(TPRI_SELF, 0U, &tskid);
488 check_ercd(ercd, E_OK);
489
490 check_assert(tskid == TASK5);
491
492 check_finish(20);
493 check_point(0);
494}
Note: See TracBrowser for help on using the repository browser.