source: asp3_wo_tecs/trunk/test/test_sysstat1.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: 13.8 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2006-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_sysstat1.c 310 2015-02-08 13:46:46Z ertl-hiro $
53 */
54
55/*
56 * システム状æ…
57‹ã«é–¢ã™ã‚‹ãƒ†ã‚¹ãƒˆ(1)
58 *
59 * 【テストの目的】
60 *
61 * CPUロック状æ…
62‹ã¨CPUロック解除状æ…
63‹ï¼Œå‰²è¾¼ã¿å„ªå…
64ˆåº¦ãƒžã‚¹ã‚¯å…
65¨è§£é™¤çŠ¶æ…
66‹ã¨ã
67 * うでない状æ…
68‹ï¼Œãƒ‡ã‚£ã‚¹ãƒ‘ッチ禁止状æ…
69‹ã¨ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ…
70‹ï¼Œã‚¿ã‚¹ã‚¯çµ‚
71 * 了禁止状æ…
72‹ã¨ã‚¿ã‚¹ã‚¯çµ‚了許可状æ…
73‹ã®é–“の状æ…
74‹é·ç§»ã‚’テストする.また,タ
75 * スクの実行開始時と終了時のシステム状æ…
76‹ã®å¤‰åŒ–についてもテストする.
77 *
78 * 【テスト項
79目】
80 *
81 * (A) 通常状æ…
82‹ï¼ˆCPUロック解除状æ…
83‹ï¼Œå‰²è¾¼ã¿å„ªå…
84ˆåº¦ãƒžã‚¹ã‚¯å…
85¨è§£é™¤çŠ¶æ…
86‹ï¼Œãƒ‡ã‚£
87 * スパッチ許可状æ…
88‹ï¼Œã‚¿ã‚¹ã‚¯çµ‚了許可状æ…
89‹ï¼‰ã‹ã‚‰ã®çŠ¶æ…
90‹é·ç§»ã®ãƒ†ã‚¹ãƒˆ
91 * (A-1) CPUロック状æ…
92‹ã¸ã®é·ç§»
93 * (A-2) 割込み優å…
94ˆåº¦ãƒžã‚¹ã‚¯å…
95¨è§£é™¤ã§ãªã„状æ…
96‹ã¸ã®é·ç§»
97 * (A-3) ディスパッチ禁止状æ…
98‹ã¸ã®é·ç§»
99 * (A-4) タスク終了禁止状æ…
100‹ã¸ã®é·ç§»
101 * (B) CPUロック状æ…
102‹ã‹ã‚‰ã®çŠ¶æ…
103‹é·ç§»ã®ãƒ†ã‚¹ãƒˆ
104 * (B-1) CPUロック状æ…
105‹ã¸ã®é·ç§» … 何も起こらない
106 * (B-2) 割込み優å…
107ˆåº¦ãƒžã‚¹ã‚¯å…
108¨è§£é™¤ã§ãªã„状æ…
109‹ã¸ã®é·ç§» … エラーに
110 * (B-3) ディスパッチ禁止状æ…
111‹ã¸ã®é·ç§» … エラーに
112 * (B-4) タスク終了禁止状æ…
113‹ã¸ã®é·ç§» … エラーに
114 * (B-5) CPUロック解除状æ…
115‹ã¸ã®é·ç§»
116 * (C) 割込み優å…
117ˆåº¦ãƒžã‚¹ã‚¯å…
118¨è§£é™¤ã§ãªã„状æ…
119‹ã‹ã‚‰ã®çŠ¶æ…
120‹é·ç§»ã®ãƒ†ã‚¹ãƒˆ
121 * (C-1) CPUロック状æ…
122‹ã¸ã®é·ç§»
123 * (C-2) 割込み優å…
124ˆåº¦ãƒžã‚¹ã‚¯å…
125¨è§£é™¤ã§ãªã„状æ…
126‹ã¸ã®é·ç§» … 何も起こらない
127 * (C-3) ディスパッチ禁止状æ…
128‹ã¸ã®é·ç§»
129 * (C-4) タスク終了禁止状æ…
130‹ã¸ã®é·ç§»
131 * (C-5) 割込み優å…
132ˆåº¦ãƒžã‚¹ã‚¯å…
133¨è§£é™¤çŠ¶æ…
134‹ã¸ã®é·ç§»
135 * (D) ディスパッチ禁止状æ…
136‹ã‹ã‚‰ã®çŠ¶æ…
137‹é·ç§»ã®ãƒ†ã‚¹ãƒˆ
138 * (D-1) CPUロック状æ…
139‹ã¸ã®é·ç§»
140 * (D-2) 割込み優å…
141ˆåº¦ãƒžã‚¹ã‚¯å…
142¨è§£é™¤ã§ãªã„状æ…
143‹ã¸ã®é·ç§»
144 * (D-3) ディスパッチ禁止状æ…
145‹ã¸ã®é·ç§» … 何も起こらない
146 * (D-4) タスク終了禁止状æ…
147‹ã¸ã®é·ç§»
148 * (D-5) ディスパッチ許可状æ…
149‹ã¸ã®é·ç§»
150 * (E) タスク終了禁止状æ…
151‹ã‹ã‚‰ã®çŠ¶æ…
152‹é·ç§»ã®ãƒ†ã‚¹ãƒˆ
153 * (E-1) CPUロック状æ…
154‹ã¸ã®é·ç§»
155 * (E-2) 割込み優å…
156ˆåº¦ãƒžã‚¹ã‚¯å…
157¨è§£é™¤ã§ãªã„状æ…
158‹ã¸ã®é·ç§»
159 * (E-3) ディスパッチ禁止状æ…
160‹ã¸ã®é·ç§»
161 * (E-4) タスク終了禁止状æ…
162‹ã¸ã®é·ç§» … 何も起こらない
163 * (E-5) タスク終了許可状æ…
164‹ã¸ã®é·ç§»
165 * (F) タスクの終了・起動により通常状æ…
166‹ã«æˆ»ã‚‹ã“とのテスト
167 * (F-1) 別のタスクの起動
168 * (F-2) 同じタスクの起動
169 *
170 * 【使用リソース】
171 *
172 * TASK1: 中優å…
173ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ŒTA_ACT属性
174 * TASK2: 中優å…
175ˆåº¦ã‚¿ã‚¹ã‚¯
176 *
177 * 【テストシーケンス】
178 *
179 * == TASK1 ==
180 * 1: state(false, false, false, false, false)
181 * ipm(TIPM_ENAALL)
182 * 2: loc_cpu() ... (A-1)
183 * state(false, true, false, true, false)
184 * 3: loc_cpu() ... (B-1)
185 * state(false, true, false, true, false)
186 * 4: chg_ipm(TMAX_INTPRI) -> E_CTX ... (B-2)
187 * dis_dsp() -> E_CTX ... (B-3)
188 * dis_ter() -> E_CTX ... (B-4)
189 * state(false, true, false, true, false)
190 * 5: unl_cpu() ... (B-5)
191 * state(false, false, false, false, false)
192 * ipm(TIPM_ENAALL)
193 * 6: chg_ipm(TMAX_INTPRI) ... (A-2)
194 * state(false, false, false, true, false)
195 * ipm(TMAX_INTPRI)
196 * 7: loc_cpu() ... (C-1)
197 * state(false, true, false, true, false)
198 * chg_ipm(TIPM_ENAALL) -> E_CTX
199 * dis_dsp() -> E_CTX
200 * dis_ter() -> E_CTX
201 * unl_cpu()
202 * state(false, false, false, true, false)
203 * ipm(TMAX_INTPRI)
204 * 8: chg_ipm(TMAX_INTPRI) ... (C-2)
205 * state(false, false, false, true, false)
206 * ipm(TMAX_INTPRI)
207 * 9: dis_dsp() ... (C-3)
208 * state(false, false, true, true, false)
209 * ipm(TMAX_INTPRI)
210 * 10: dis_ter() ... (C-4)
211 * state(false, false, true, true, true)
212 * ipm(TMAX_INTPRI)
213 * 11: chg_ipm(TIPM_ENAALL) ... (C-5)
214 * state(false, false, true, true, true)
215 * ipm(TIPM_ENAALL)
216 * 12: ena_dsp()
217 * state(false, false, false, false, true)
218 * ipm(TIPM_ENAALL)
219 * 13: ena_ter()
220 * state(false, false, false, false, false)
221 * ipm(TIPM_ENAALL)
222 * 14: dis_dsp() ... (A-3)
223 * state(false, false, true, true, false)
224 * ipm(TIPM_ENAALL)
225 * 15: loc_cpu() ... (D-1)
226 * state(false, true, true, true, false)
227 * unl_cpu()
228 * state(false, false, true, true, false)
229 * ipm(TIPM_ENAALL)
230 * 16: chg_ipm(TMAX_INTPRI) ... (D-2)
231 * state(false, false, true, true, false)
232 * ipm(TMAX_INTPRI)
233 * 17: dis_dsp() ... (D-3)
234 * state(false, false, true, true, false)
235 * ipm(TMAX_INTPRI)
236 * 18: dis_ter() ... (D-4)
237 * state(false, false, true, true, true)
238 * ipm(TMAX_INTPRI)
239 * 19: ena_dsp() ... (D-5)
240 * state(false, false, false, true, true)
241 * ipm(TMAX_INTPRI)
242 * 20: chg_ipm(TIPM_ENAALL)
243 * state(false, false, false, false, true)
244 * ipm(TIPM_ENAALL)
245 * 21: ena_ter() ... (E-5)
246 * state(false, false, false, false, false)
247 * ipm(TIPM_ENAALL)
248 * 22: dis_ter() ... (A-4)
249 * state(false, false, false, false, true)
250 * ipm(TIPM_ENAALL)
251 * 23: loc_cpu() ... (E-1)
252 * state(false, true, false, true, true)
253 * unl_cpu()
254 * state(false, false, false, false, true)
255 * ipm(TIPM_ENAALL)
256 * 24: chg_ipm(TMAX_INTPRI) ... (E-2)
257 * state(false, false, false, true, true)
258 * ipm(TMAX_INTPRI)
259 * 25: dis_dsp() ... (E-3)
260 * state(false, false, true, true, true)
261 * ipm(TMAX_INTPRI)
262 * 26: dis_ter() ... (E-4)
263 * state(false, false, true, true, true)
264 * ipm(TMAX_INTPRI)
265 * 27: act_tsk(TASK2)
266 * dis_ter()
267 * loc_cpu()
268 * state(false, true, true, true, true)
269 * ext_tsk()
270 * == TASK2-1(1回目)==
271 * 28: state(false, false, false, false, false) ... (F-1)
272 * ipm(TIPM_ENAALL)
273 * 29: act_tsk(TASK2)
274 * chg_ipm(TMAX_INTPRI)
275 * dis_dsp()
276 * dis_ter()
277 * loc_cpu()
278 * state(false, true, true, true, true)
279 * ext_tsk()
280 * == TASK2-2(2回目)==
281 * 30: state(false, false, false, false, false) ... (F-2)
282 * ipm(TIPM_ENAALL)
283 * 31: END
284 */
285
286#include <kernel.h>
287#include <t_syslog.h>
288#include "syssvc/test_svc.h"
289#include "kernel_cfg.h"
290#include "test_sysstat1.h"
291
292/* DO NOT DELETE THIS LINE -- gentest depends on it. */
293
294void
295task1(intptr_t exinf)
296{
297 ER_UINT ercd;
298
299 test_start(__FILE__);
300
301 check_point(1);
302 check_state(false, false, false, false, false);
303
304 check_ipm(TIPM_ENAALL);
305
306 check_point(2);
307 ercd = loc_cpu();
308 check_ercd(ercd, E_OK);
309
310 check_state(false, true, false, true, false);
311
312 check_point(3);
313 ercd = loc_cpu();
314 check_ercd(ercd, E_OK);
315
316 check_state(false, true, false, true, false);
317
318 check_point(4);
319 ercd = chg_ipm(TMAX_INTPRI);
320 check_ercd(ercd, E_CTX);
321
322 ercd = dis_dsp();
323 check_ercd(ercd, E_CTX);
324
325 ercd = dis_ter();
326 check_ercd(ercd, E_CTX);
327
328 check_state(false, true, false, true, false);
329
330 check_point(5);
331 ercd = unl_cpu();
332 check_ercd(ercd, E_OK);
333
334 check_state(false, false, false, false, false);
335
336 check_ipm(TIPM_ENAALL);
337
338 check_point(6);
339 ercd = chg_ipm(TMAX_INTPRI);
340 check_ercd(ercd, E_OK);
341
342 check_state(false, false, false, true, false);
343
344 check_ipm(TMAX_INTPRI);
345
346 check_point(7);
347 ercd = loc_cpu();
348 check_ercd(ercd, E_OK);
349
350 check_state(false, true, false, true, false);
351
352 ercd = chg_ipm(TIPM_ENAALL);
353 check_ercd(ercd, E_CTX);
354
355 ercd = dis_dsp();
356 check_ercd(ercd, E_CTX);
357
358 ercd = dis_ter();
359 check_ercd(ercd, E_CTX);
360
361 ercd = unl_cpu();
362 check_ercd(ercd, E_OK);
363
364 check_state(false, false, false, true, false);
365
366 check_ipm(TMAX_INTPRI);
367
368 check_point(8);
369 ercd = chg_ipm(TMAX_INTPRI);
370 check_ercd(ercd, E_OK);
371
372 check_state(false, false, false, true, false);
373
374 check_ipm(TMAX_INTPRI);
375
376 check_point(9);
377 ercd = dis_dsp();
378 check_ercd(ercd, E_OK);
379
380 check_state(false, false, true, true, false);
381
382 check_ipm(TMAX_INTPRI);
383
384 check_point(10);
385 ercd = dis_ter();
386 check_ercd(ercd, E_OK);
387
388 check_state(false, false, true, true, true);
389
390 check_ipm(TMAX_INTPRI);
391
392 check_point(11);
393 ercd = chg_ipm(TIPM_ENAALL);
394 check_ercd(ercd, E_OK);
395
396 check_state(false, false, true, true, true);
397
398 check_ipm(TIPM_ENAALL);
399
400 check_point(12);
401 ercd = ena_dsp();
402 check_ercd(ercd, E_OK);
403
404 check_state(false, false, false, false, true);
405
406 check_ipm(TIPM_ENAALL);
407
408 check_point(13);
409 ercd = ena_ter();
410 check_ercd(ercd, E_OK);
411
412 check_state(false, false, false, false, false);
413
414 check_ipm(TIPM_ENAALL);
415
416 check_point(14);
417 ercd = dis_dsp();
418 check_ercd(ercd, E_OK);
419
420 check_state(false, false, true, true, false);
421
422 check_ipm(TIPM_ENAALL);
423
424 check_point(15);
425 ercd = loc_cpu();
426 check_ercd(ercd, E_OK);
427
428 check_state(false, true, true, true, false);
429
430 ercd = unl_cpu();
431 check_ercd(ercd, E_OK);
432
433 check_state(false, false, true, true, false);
434
435 check_ipm(TIPM_ENAALL);
436
437 check_point(16);
438 ercd = chg_ipm(TMAX_INTPRI);
439 check_ercd(ercd, E_OK);
440
441 check_state(false, false, true, true, false);
442
443 check_ipm(TMAX_INTPRI);
444
445 check_point(17);
446 ercd = dis_dsp();
447 check_ercd(ercd, E_OK);
448
449 check_state(false, false, true, true, false);
450
451 check_ipm(TMAX_INTPRI);
452
453 check_point(18);
454 ercd = dis_ter();
455 check_ercd(ercd, E_OK);
456
457 check_state(false, false, true, true, true);
458
459 check_ipm(TMAX_INTPRI);
460
461 check_point(19);
462 ercd = ena_dsp();
463 check_ercd(ercd, E_OK);
464
465 check_state(false, false, false, true, true);
466
467 check_ipm(TMAX_INTPRI);
468
469 check_point(20);
470 ercd = chg_ipm(TIPM_ENAALL);
471 check_ercd(ercd, E_OK);
472
473 check_state(false, false, false, false, true);
474
475 check_ipm(TIPM_ENAALL);
476
477 check_point(21);
478 ercd = ena_ter();
479 check_ercd(ercd, E_OK);
480
481 check_state(false, false, false, false, false);
482
483 check_ipm(TIPM_ENAALL);
484
485 check_point(22);
486 ercd = dis_ter();
487 check_ercd(ercd, E_OK);
488
489 check_state(false, false, false, false, true);
490
491 check_ipm(TIPM_ENAALL);
492
493 check_point(23);
494 ercd = loc_cpu();
495 check_ercd(ercd, E_OK);
496
497 check_state(false, true, false, true, true);
498
499 ercd = unl_cpu();
500 check_ercd(ercd, E_OK);
501
502 check_state(false, false, false, false, true);
503
504 check_ipm(TIPM_ENAALL);
505
506 check_point(24);
507 ercd = chg_ipm(TMAX_INTPRI);
508 check_ercd(ercd, E_OK);
509
510 check_state(false, false, false, true, true);
511
512 check_ipm(TMAX_INTPRI);
513
514 check_point(25);
515 ercd = dis_dsp();
516 check_ercd(ercd, E_OK);
517
518 check_state(false, false, true, true, true);
519
520 check_ipm(TMAX_INTPRI);
521
522 check_point(26);
523 ercd = dis_ter();
524 check_ercd(ercd, E_OK);
525
526 check_state(false, false, true, true, true);
527
528 check_ipm(TMAX_INTPRI);
529
530 check_point(27);
531 ercd = act_tsk(TASK2);
532 check_ercd(ercd, E_OK);
533
534 ercd = dis_ter();
535 check_ercd(ercd, E_OK);
536
537 ercd = loc_cpu();
538 check_ercd(ercd, E_OK);
539
540 check_state(false, true, true, true, true);
541
542 ercd = ext_tsk();
543 check_ercd(ercd, E_OK);
544
545 check_point(0);
546}
547
548static uint_t task2_count = 0;
549
550void
551task2(intptr_t exinf)
552{
553 ER_UINT ercd;
554
555 switch (++task2_count) {
556 case 1:
557 check_point(28);
558 check_state(false, false, false, false, false);
559
560 check_ipm(TIPM_ENAALL);
561
562 check_point(29);
563 ercd = act_tsk(TASK2);
564 check_ercd(ercd, E_OK);
565
566 ercd = chg_ipm(TMAX_INTPRI);
567 check_ercd(ercd, E_OK);
568
569 ercd = dis_dsp();
570 check_ercd(ercd, E_OK);
571
572 ercd = dis_ter();
573 check_ercd(ercd, E_OK);
574
575 ercd = loc_cpu();
576 check_ercd(ercd, E_OK);
577
578 check_state(false, true, true, true, true);
579
580 ercd = ext_tsk();
581 check_ercd(ercd, E_OK);
582
583 check_point(0);
584
585 case 2:
586 check_point(30);
587 check_state(false, false, false, false, false);
588
589 check_ipm(TIPM_ENAALL);
590
591 check_finish(31);
592 check_point(0);
593
594 default:
595 check_point(0);
596 }
597 check_point(0);
598}
Note: See TracBrowser for help on using the repository browser.