source: asp3_wo_tecs/trunk/test/test_flg1.c@ 304

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

コンフィギュレータをruby版に変更

File size: 20.4 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2015-2016 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_flg1.c 579 2016-02-03 07:29:11Z ertl-hiro $
53 */
54
55/*
56 * イベントフラグ機能のテスト(1)
57 *
58 * 【テストの目的】
59 *
60 * set_flg(タスクコンテキストからの呼出し),wai_flg,CRE_FLGを網羅
61的
62 * にテストする(ただし,CRE_FLGのエラーのテストは除く).
63 *
64 * 【テスト項
65目】
66 *
67 * (A) set_flgの静的エラーのテスト
68 * (A-1) CPUロック状æ…
69‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1604ï¼½
70 * (A-2) flgidが不正(小さすぎる)[NGKI1605]
71 * (A-3) flgidが不正(大きすぎる)[NGKI1605]
72 * (B) set_flgによりイベントフラグがセットされる[NGKI1608]
73 * (B-1) 現在パターンが0x00の時に,0x00をセットする
74 * (B-2) 現在パターンが0x00の時に,0x01をセットする
75 * (B-3) 現在パターンが0x01の時に,0x01をセットする
76 * (B-4) 現在パターンが0x01の時に,0x02をセットする
77 * (B-5) 現在パターンが0x01の時に,0x03をセットする
78 * (C) set_flgによりイベントフラグ待
79ち状æ…
80‹ã®ã‚¿ã‚¹ã‚¯ãŒå¾…
81ち解除される
82 * (C-1) 待
83ち解除されたタスクに切り換わる
84 * (C-2) ディスパッチ保留状æ…
85‹ã§ï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
86 * (C-3) 待
87ち解除されたタスクが強制待
88ち状æ…
89‹ã§ï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
90 * (C-4) 待
91ち解除されたタスクが優å…
92ˆåº¦ãŒä½Žãï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
93 * (D) wai_flgの静的エラーのテスト
94 * (D-1) 非タスクコンテキストからの呼出し[NGKI1621]
95 * (D-2) CPUロック状æ…
96‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1622ï¼½
97 * (D-3) ディスパッチ禁止状æ…
98‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1623ï¼½
99 * (D-4) 割込み優å…
100ˆåº¦ãƒžã‚¹ã‚¯å…
101¨è§£é™¤ã§ãªã„状æ…
102‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1623ï¼½
103 * (D-5) flgidが不正(小さすぎる)[NGKI1625]
104 * (D-6) flgidが不正(大きすぎる)[NGKI1625]
105 * (D-7) waiptnが0[NGKI1626]
106 * (D-8) wfmodeが0[NGKI1627]
107 * (D-9) wfmodeが(TWF_ORW|TWF_ANDW)[NGKI1627]
108 * (E) wai_flgの待
109ち解除条件のテスト[NGKI1636]
110 * TA_CLR属性でないイベントフラグでテストする.以下の各パターンで,
111 * ビットパターンの現在値が*p_flgptnに返ることを確認する
112 * (E-1) TWF_ORWで,いずれかのビットがセットされていれば成立すること
113 * (E-2) TWF_ORWで,対象外のビットがセットされていても不成立になること
114 * (E-3) TWF_ANDWで,すべてのビットがセットされていれば成立すること
115 * (E-4) TWF_ANDWで,一部のビットがセットされていても不成立になること
116 * (F) wai_flgでのTA_CLR属性のテスト[NGKI1637]
117 * TA_CLR属性のイベントフラグでテストする.以下の各パターンで,ビッ
118 * トパターンが0にクリアされることと,ビットパターンの現在値が
119 * *p_flgptnに返ることを確認する
120 * (F-1) TWF_ORWで,いずれかのビットがセットされていれば成立すること
121 * (F-2) TWF_ORWで,対象外のビットがセットされていても不成立になること
122 * (F-3) TWF_ANDWで,すべてのビットがセットされていれば成立すること
123 * (F-4) TWF_ANDWで,一部のビットがセットされていても不成立になること
124 * (G) 複数タスク待
125ちエラーのテスト[NGKI1632]
126 * TA_WMUL属性でないイベントフラグでテストする.以下の各パターンで,
127 * 待
128ちタスクある時に,wai_flgを呼ぶとエラーになることを確認する
129 * (G-1) 待
130ち解除条件が成立している時
131 * (G-2) 待
132ち解除条件が成立していない時
133 * (H) 複数タスク待
134ちのテスト[NGKI1609]
135 * TA_WMUL属性,TA_CLR属性で,TA_TPRI属性でないイベントフラグでテ
136 * ストする.
137 * (H-1) 複数のタスクが待
138ちになれること
139 * (H-2) 複数のタスクがFIFO順で待
140ち解除されること
141 * (H-3) 待
142ち解除条件によっては,FIFO順で後ろのタスクのみが待
143ち解
144 * 除されること
145 * (I) 複数タスク待
146ちのテスト[NGKI1609]
147 * TA_WMUL属性,TA_CLR属性かつTA_TPRI属性のイベントフラグでテスト
148 * する.
149 * (I-1) 複数のタスクが待
150ちになれること
151 * (I-2) 複数のタスクが優å…
152ˆåº¦é †ã§å¾…
153ち解除されること
154 * (I-3) 待
155ち解除条件によっては,優å…
156ˆåº¦é †ã§å¾Œã‚ã®ã‚¿ã‚¹ã‚¯ã®ã¿ãŒå¾…
157ち
158 * 解除されること
159 * (J) イベントフラグのビットパターンの初期値が正しく設定される[NGKI1570]
160 * (J-1) 初期ビットパターンが0x00
161 * (J-2) 初期ビットパターンが0x01
162 *
163 * 【使用リソース】
164 *
165 * TASK1: 中優å…
166ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ŒTA_ACT属性
167 * TASK2: 高優å…
168ˆåº¦ã‚¿ã‚¹ã‚¯
169 * TASK3: 低優å…
170ˆåº¦ã‚¿ã‚¹ã‚¯
171 * TASK4: 中優å…
172ˆåº¦ã‚¿ã‚¹ã‚¯
173 * TASK5: 中優å…
174ˆåº¦ã‚¿ã‚¹ã‚¯
175 * ALM1: アラームハンドラ
176 * FLG1: TA_NULL属性,初期ビットパターン0x00
177 * FLG2: TA_CLR属性,初期ビットパターン0x01
178 * FLG3: TA_WMUL属性,初期ビットパターン0x00
179 * FLG4: TA_WMUL|TA_TPRI属性,初期ビットパターン0x00
180 *
181 * 【テストシーケンス】
182 *
183 * == TASK1(優å…
184ˆåº¦ï¼šä¸­ï¼‰==
185 * 1: ref_flg(FLG1, &rflg)
186 * assert(rflg.wtskid == TSK_NONE)
187 * assert(rflg.flgptn == 0x00) ... (J-1)
188 * ref_flg(FLG2, &rflg)
189 * assert(rflg.wtskid == TSK_NONE)
190 * assert(rflg.flgptn == 0x01) ... (J-2)
191 * 2: loc_cpu()
192 * set_flg(FLG1, 0x01) -> E_CTX ... (A-1)
193 * wai_flg(FLG1)
194 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-2)
195 * unl_cpu()
196 * dis_dsp()
197 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-3)
198 * ena_dsp()
199 * chg_ipm(TMAX_INTPRI)
200 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-4)
201 * chg_ipm(TIPM_ENAALL)
202 * set_flg(0, 0x01) -> E_ID ... (A-2)
203 * wai_flg(0, 0x01, TWF_ORW, &flgptn) -> E_ID ... (D-5)
204 * set_flg(TNUM_FLGID+1, 0x01) -> E_ID ... (A-3)
205 * wai_flg(TNUM_FLGID+1, 0x01, TWF_ORW, &flgptn) -> E_ID ... (D-6)
206 * wai_flg(FLG1, 0x00, TWF_ORW, &flgptn) -> E_PAR ... (D-7)
207 * wai_flg(FLG1, 0x01, 0U, &flgptn) -> E_PAR ... (D-8)
208 * wai_flg(FLG1, 0x01, (TWF_ORW|TWF_ANDW), &flgptn) -> E_PAR ... (D-9)
209 * set_flg(FLG1, 0x00) ... (B-1)
210 * ref_flg(FLG1, &rflg)
211 * assert(rflg.wtskid == TSK_NONE)
212 * assert(rflg.flgptn == 0x00)
213 * set_flg(FLG1, 0x01) ... (B-2)
214 * ref_flg(FLG1, &rflg)
215 * assert(rflg.wtskid == TSK_NONE)
216 * assert(rflg.flgptn == 0x01)
217 * set_flg(FLG1, 0x01) ... (B-3)
218 * ref_flg(FLG1, &rflg)
219 * assert(rflg.wtskid == TSK_NONE)
220 * assert(rflg.flgptn == 0x01)
221 * set_flg(FLG1, 0x02) ... (B-4)
222 * ref_flg(FLG1, &rflg)
223 * assert(rflg.wtskid == TSK_NONE)
224 * assert(rflg.flgptn == 0x03)
225 * clr_flg(FLG1, ~0x01)
226 * set_flg(FLG1, 0x03) ... (B-5)
227 * ref_flg(FLG1, &rflg)
228 * assert(rflg.wtskid == TSK_NONE)
229 * assert(rflg.flgptn == 0x03)
230 * 3: act_tsk(TASK2)
231 * == TASK2(優å…
232ˆåº¦ï¼šé«˜ï¼‰==
233 * 4: wai_flg(FLG1, 0x05, TWF_ORW, &flgptn) ... (E-1)
234 * assert(flgptn == 0x03)
235 * 5: wai_flg(FLG1, 0x04, TWF_ORW, &flgptn) ... (E-2)
236 * == TASK1(続き)==
237 * 6: set_flg(FLG1, 0x04) ... (C-1)
238 * == TASK2(続き)==
239 * 7: assert(flgptn == 0x07)
240 * wai_flg(FLG1, 0x03, TWF_ANDW, &flgptn) ... (E-3)
241 * assert(flgptn == 0x07)
242 * 8: wai_flg(FLG1, 0x0c, TWF_ANDW, &flgptn) ... (E-4)
243 * == TASK1(続き)==
244 * 9: dis_dsp()
245 * set_flg(FLG1, 0x08) ... (C-2)
246 * ref_flg(FLG1, &rflg)
247 * assert(rflg.wtskid == TSK_NONE)
248 * assert(rflg.flgptn == 0x0f)
249 * 10: ena_dsp()
250 * == TASK2(続き)==
251 * 11: assert(flgptn == 0x0f)
252 * wai_flg(FLG2, 0x05, TWF_ORW, &flgptn) ... (F-1)
253 * assert(flgptn == 0x01)
254 * ref_flg(FLG2, &rflg)
255 * assert(rflg.wtskid == TSK_NONE)
256 * assert(rflg.flgptn == 0x00)
257 * set_flg(FLG2, 0x01)
258 * 12: wai_flg(FLG2, 0x04, TWF_ORW, &flgptn) ... (F-2)
259 * == TASK1(続き)==
260 * 13: chg_ipm(TMAX_INTPRI)
261 * set_flg(FLG2, 0x04) ... (C-2)
262 * ref_flg(FLG2, &rflg)
263 * assert(rflg.wtskid == TSK_NONE)
264 * assert(rflg.flgptn == 0x00)
265 * 14: chg_ipm(TIPM_ENAALL)
266 * == TASK2(続き)==
267 * 15: assert(flgptn == 0x05)
268 * ref_flg(FLG2, &rflg)
269 * assert(rflg.wtskid == TSK_NONE)
270 * assert(rflg.flgptn == 0x00)
271 * set_flg(FLG2, 0x03)
272 * wai_flg(FLG2, 0x03, TWF_ANDW, &flgptn) ... (F-3)
273 * assert(flgptn == 0x03)
274 * ref_flg(FLG2, &rflg)
275 * assert(rflg.wtskid == TSK_NONE)
276 * assert(rflg.flgptn == 0x00)
277 * set_flg(FLG2, 0x03)
278 * 16: wai_flg(FLG2, 0x05, TWF_ANDW, &flgptn) ... (F-4)
279 * == TASK1(続き)==
280 * 17: sus_tsk(TASK2)
281 * set_flg(FLG2, 0x04) ... (C-3)
282 * ref_flg(FLG2, &rflg)
283 * assert(rflg.wtskid == TSK_NONE)
284 * assert(rflg.flgptn == 0x00)
285 * 18: rsm_tsk(TASK2)
286 * == TASK2(続き)==
287 * 19: assert(flgptn == 0x07)
288 * 20: wai_flg(FLG2, 0x01, TWF_ORW, &flgptn)
289 * == TASK1(続き)==
290 * 21: wai_flg(FLG2, 0x02, TWF_ORW, &flgptn) -> E_ILUSE ... (G-2)
291 * set_flg(FLG2, 0x02)
292 * wai_flg(FLG2, 0x02, TWF_ORW, &flgptn) -> E_ILUSE ... (G-1)
293 * 22: set_flg(FLG2, 0x01)
294 * == TASK2(続き)==
295 * 23: assert(flgptn == 0x03)
296 * act_tsk(TASK3)
297 * 24: slp_tsk()
298 * == TASK1(続き)==
299 * 25: wai_flg(FLG3, 0x01, TWF_ORW, &flgptn)
300 * == TASK3(優å…
301ˆåº¦ï¼šä½Žï¼‰==
302 * 26: wup_tsk(TASK2)
303 * == TASK2(続き)==
304 * 27: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn) ... (H-1)
305 * == TASK3(続き)==
306 * 28: set_flg(FLG3, 0x02) ... (H-3)
307 * == TASK2(続き)==
308 * 29: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn)
309 * == TASK3(続き)==
310 * 30: set_flg(FLG3, 0x03) ... (H-2)
311 * == TASK1(続き)==
312 * 31: wai_flg(FLG4, 0x01, TWF_ORW, &flgptn)
313 * == TASK3(優å…
314ˆåº¦ï¼šä½Žï¼‰==
315 * 32: set_flg(FLG3, 0x03)
316 * == TASK2(続き)==
317 * 33: wai_flg(FLG4, 0x02, TWF_ORW, &flgptn) ... (I-1)
318 * == TASK3(続き)==
319 * 34: set_flg(FLG4, 0x03) ... (I-2)
320 * == TASK2(続き)==
321 * 35: wai_flg(FLG4, 0x02, TWF_ORW, &flgptn)
322 * == TASK3(続き)==
323 * 36: set_flg(FLG4, 0x01) ... (I-3)
324 * == TASK1(続き)==
325 * 37: clr_flg(FLG3, 0)
326 * sta_alm(ALM1, 10000U)
327 * 38: wai_flg(FLG3, 0x01, TWF_ORW, &flgptn)
328 * == TASK3(続き)==
329 * 39: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn)
330 * == ALM1 ==
331 * 40: wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-1)
332 * set_flg(FLG3, 0x01)
333 * 41: RETURN
334 * == TASK1(続き)==
335 * 42: set_flg(FLG3, 0x02) ... (C-4)
336 * 43: slp_tsk()
337 * == TASK3(続き)==
338 * 44: END
339 */
340
341#include <kernel.h>
342#include <t_syslog.h>
343#include "syssvc/test_svc.h"
344#include "kernel_cfg.h"
345#include "test_sem1.h"
346
347/* DO NOT DELETE THIS LINE -- gentest depends on it. */
348
349void
350alarm1_handler(intptr_t exinf)
351{
352 ER_UINT ercd;
353 FLGPTN flgptn;
354
355 check_point(40);
356 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
357 check_ercd(ercd, E_CTX);
358
359 ercd = set_flg(FLG3, 0x01);
360 check_ercd(ercd, E_OK);
361
362 check_point(41);
363 return;
364
365 check_point(0);
366}
367
368void
369task1(intptr_t exinf)
370{
371 ER_UINT ercd;
372 T_RFLG rflg;
373 FLGPTN flgptn;
374
375 test_start(__FILE__);
376
377 check_point(1);
378 ercd = ref_flg(FLG1, &rflg);
379 check_ercd(ercd, E_OK);
380
381 check_assert(rflg.wtskid == TSK_NONE);
382
383 check_assert(rflg.flgptn == 0x00);
384
385 ercd = ref_flg(FLG2, &rflg);
386 check_ercd(ercd, E_OK);
387
388 check_assert(rflg.wtskid == TSK_NONE);
389
390 check_assert(rflg.flgptn == 0x01);
391
392 check_point(2);
393 ercd = loc_cpu();
394 check_ercd(ercd, E_OK);
395
396 ercd = set_flg(FLG1, 0x01);
397 check_ercd(ercd, E_CTX);
398
399 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
400 check_ercd(ercd, E_CTX);
401
402 ercd = unl_cpu();
403 check_ercd(ercd, E_OK);
404
405 ercd = dis_dsp();
406 check_ercd(ercd, E_OK);
407
408 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
409 check_ercd(ercd, E_CTX);
410
411 ercd = ena_dsp();
412 check_ercd(ercd, E_OK);
413
414 ercd = chg_ipm(TMAX_INTPRI);
415 check_ercd(ercd, E_OK);
416
417 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
418 check_ercd(ercd, E_CTX);
419
420 ercd = chg_ipm(TIPM_ENAALL);
421 check_ercd(ercd, E_OK);
422
423 ercd = set_flg(0, 0x01);
424 check_ercd(ercd, E_ID);
425
426 ercd = wai_flg(0, 0x01, TWF_ORW, &flgptn);
427 check_ercd(ercd, E_ID);
428
429 ercd = set_flg(TNUM_FLGID+1, 0x01);
430 check_ercd(ercd, E_ID);
431
432 ercd = wai_flg(TNUM_FLGID+1, 0x01, TWF_ORW, &flgptn);
433 check_ercd(ercd, E_ID);
434
435 ercd = wai_flg(FLG1, 0x00, TWF_ORW, &flgptn);
436 check_ercd(ercd, E_PAR);
437
438 ercd = wai_flg(FLG1, 0x01, 0U, &flgptn);
439 check_ercd(ercd, E_PAR);
440
441 ercd = wai_flg(FLG1, 0x01, (TWF_ORW|TWF_ANDW), &flgptn);
442 check_ercd(ercd, E_PAR);
443
444 ercd = set_flg(FLG1, 0x00);
445 check_ercd(ercd, E_OK);
446
447 ercd = ref_flg(FLG1, &rflg);
448 check_ercd(ercd, E_OK);
449
450 check_assert(rflg.wtskid == TSK_NONE);
451
452 check_assert(rflg.flgptn == 0x00);
453
454 ercd = set_flg(FLG1, 0x01);
455 check_ercd(ercd, E_OK);
456
457 ercd = ref_flg(FLG1, &rflg);
458 check_ercd(ercd, E_OK);
459
460 check_assert(rflg.wtskid == TSK_NONE);
461
462 check_assert(rflg.flgptn == 0x01);
463
464 ercd = set_flg(FLG1, 0x01);
465 check_ercd(ercd, E_OK);
466
467 ercd = ref_flg(FLG1, &rflg);
468 check_ercd(ercd, E_OK);
469
470 check_assert(rflg.wtskid == TSK_NONE);
471
472 check_assert(rflg.flgptn == 0x01);
473
474 ercd = set_flg(FLG1, 0x02);
475 check_ercd(ercd, E_OK);
476
477 ercd = ref_flg(FLG1, &rflg);
478 check_ercd(ercd, E_OK);
479
480 check_assert(rflg.wtskid == TSK_NONE);
481
482 check_assert(rflg.flgptn == 0x03);
483
484 ercd = clr_flg(FLG1, ~0x01);
485 check_ercd(ercd, E_OK);
486
487 ercd = set_flg(FLG1, 0x03);
488 check_ercd(ercd, E_OK);
489
490 ercd = ref_flg(FLG1, &rflg);
491 check_ercd(ercd, E_OK);
492
493 check_assert(rflg.wtskid == TSK_NONE);
494
495 check_assert(rflg.flgptn == 0x03);
496
497 check_point(3);
498 ercd = act_tsk(TASK2);
499 check_ercd(ercd, E_OK);
500
501 check_point(6);
502 ercd = set_flg(FLG1, 0x04);
503 check_ercd(ercd, E_OK);
504
505 check_point(9);
506 ercd = dis_dsp();
507 check_ercd(ercd, E_OK);
508
509 ercd = set_flg(FLG1, 0x08);
510 check_ercd(ercd, E_OK);
511
512 ercd = ref_flg(FLG1, &rflg);
513 check_ercd(ercd, E_OK);
514
515 check_assert(rflg.wtskid == TSK_NONE);
516
517 check_assert(rflg.flgptn == 0x0f);
518
519 check_point(10);
520 ercd = ena_dsp();
521 check_ercd(ercd, E_OK);
522
523 check_point(13);
524 ercd = chg_ipm(TMAX_INTPRI);
525 check_ercd(ercd, E_OK);
526
527 ercd = set_flg(FLG2, 0x04);
528 check_ercd(ercd, E_OK);
529
530 ercd = ref_flg(FLG2, &rflg);
531 check_ercd(ercd, E_OK);
532
533 check_assert(rflg.wtskid == TSK_NONE);
534
535 check_assert(rflg.flgptn == 0x00);
536
537 check_point(14);
538 ercd = chg_ipm(TIPM_ENAALL);
539 check_ercd(ercd, E_OK);
540
541 check_point(17);
542 ercd = sus_tsk(TASK2);
543 check_ercd(ercd, E_OK);
544
545 ercd = set_flg(FLG2, 0x04);
546 check_ercd(ercd, E_OK);
547
548 ercd = ref_flg(FLG2, &rflg);
549 check_ercd(ercd, E_OK);
550
551 check_assert(rflg.wtskid == TSK_NONE);
552
553 check_assert(rflg.flgptn == 0x00);
554
555 check_point(18);
556 ercd = rsm_tsk(TASK2);
557 check_ercd(ercd, E_OK);
558
559 check_point(21);
560 ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
561 check_ercd(ercd, E_ILUSE);
562
563 ercd = set_flg(FLG2, 0x02);
564 check_ercd(ercd, E_OK);
565
566 ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
567 check_ercd(ercd, E_ILUSE);
568
569 check_point(22);
570 ercd = set_flg(FLG2, 0x01);
571 check_ercd(ercd, E_OK);
572
573 check_point(25);
574 ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
575 check_ercd(ercd, E_OK);
576
577 check_point(31);
578 ercd = wai_flg(FLG4, 0x01, TWF_ORW, &flgptn);
579 check_ercd(ercd, E_OK);
580
581 check_point(37);
582 ercd = clr_flg(FLG3, 0);
583 check_ercd(ercd, E_OK);
584
585 ercd = sta_alm(ALM1, 10000U);
586 check_ercd(ercd, E_OK);
587
588 check_point(38);
589 ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
590 check_ercd(ercd, E_OK);
591
592 check_point(42);
593 ercd = set_flg(FLG3, 0x02);
594 check_ercd(ercd, E_OK);
595
596 check_point(43);
597 ercd = slp_tsk();
598 check_ercd(ercd, E_OK);
599
600 check_point(0);
601}
602
603void
604task2(intptr_t exinf)
605{
606 ER_UINT ercd;
607 FLGPTN flgptn;
608 T_RFLG rflg;
609
610 check_point(4);
611 ercd = wai_flg(FLG1, 0x05, TWF_ORW, &flgptn);
612 check_ercd(ercd, E_OK);
613
614 check_assert(flgptn == 0x03);
615
616 check_point(5);
617 ercd = wai_flg(FLG1, 0x04, TWF_ORW, &flgptn);
618 check_ercd(ercd, E_OK);
619
620 check_point(7);
621 check_assert(flgptn == 0x07);
622
623 ercd = wai_flg(FLG1, 0x03, TWF_ANDW, &flgptn);
624 check_ercd(ercd, E_OK);
625
626 check_assert(flgptn == 0x07);
627
628 check_point(8);
629 ercd = wai_flg(FLG1, 0x0c, TWF_ANDW, &flgptn);
630 check_ercd(ercd, E_OK);
631
632 check_point(11);
633 check_assert(flgptn == 0x0f);
634
635 ercd = wai_flg(FLG2, 0x05, TWF_ORW, &flgptn);
636 check_ercd(ercd, E_OK);
637
638 check_assert(flgptn == 0x01);
639
640 ercd = ref_flg(FLG2, &rflg);
641 check_ercd(ercd, E_OK);
642
643 check_assert(rflg.wtskid == TSK_NONE);
644
645 check_assert(rflg.flgptn == 0x00);
646
647 ercd = set_flg(FLG2, 0x01);
648 check_ercd(ercd, E_OK);
649
650 check_point(12);
651 ercd = wai_flg(FLG2, 0x04, TWF_ORW, &flgptn);
652 check_ercd(ercd, E_OK);
653
654 check_point(15);
655 check_assert(flgptn == 0x05);
656
657 ercd = ref_flg(FLG2, &rflg);
658 check_ercd(ercd, E_OK);
659
660 check_assert(rflg.wtskid == TSK_NONE);
661
662 check_assert(rflg.flgptn == 0x00);
663
664 ercd = set_flg(FLG2, 0x03);
665 check_ercd(ercd, E_OK);
666
667 ercd = wai_flg(FLG2, 0x03, TWF_ANDW, &flgptn);
668 check_ercd(ercd, E_OK);
669
670 check_assert(flgptn == 0x03);
671
672 ercd = ref_flg(FLG2, &rflg);
673 check_ercd(ercd, E_OK);
674
675 check_assert(rflg.wtskid == TSK_NONE);
676
677 check_assert(rflg.flgptn == 0x00);
678
679 ercd = set_flg(FLG2, 0x03);
680 check_ercd(ercd, E_OK);
681
682 check_point(16);
683 ercd = wai_flg(FLG2, 0x05, TWF_ANDW, &flgptn);
684 check_ercd(ercd, E_OK);
685
686 check_point(19);
687 check_assert(flgptn == 0x07);
688
689 check_point(20);
690 ercd = wai_flg(FLG2, 0x01, TWF_ORW, &flgptn);
691 check_ercd(ercd, E_OK);
692
693 check_point(23);
694 check_assert(flgptn == 0x03);
695
696 ercd = act_tsk(TASK3);
697 check_ercd(ercd, E_OK);
698
699 check_point(24);
700 ercd = slp_tsk();
701 check_ercd(ercd, E_OK);
702
703 check_point(27);
704 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
705 check_ercd(ercd, E_OK);
706
707 check_point(29);
708 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
709 check_ercd(ercd, E_OK);
710
711 check_point(33);
712 ercd = wai_flg(FLG4, 0x02, TWF_ORW, &flgptn);
713 check_ercd(ercd, E_OK);
714
715 check_point(35);
716 ercd = wai_flg(FLG4, 0x02, TWF_ORW, &flgptn);
717 check_ercd(ercd, E_OK);
718
719 check_point(0);
720}
721
722void
723task3(intptr_t exinf)
724{
725 ER_UINT ercd;
726 FLGPTN flgptn;
727
728 check_point(26);
729 ercd = wup_tsk(TASK2);
730 check_ercd(ercd, E_OK);
731
732 check_point(28);
733 ercd = set_flg(FLG3, 0x02);
734 check_ercd(ercd, E_OK);
735
736 check_point(30);
737 ercd = set_flg(FLG3, 0x03);
738 check_ercd(ercd, E_OK);
739
740 check_point(32);
741 ercd = set_flg(FLG3, 0x03);
742 check_ercd(ercd, E_OK);
743
744 check_point(34);
745 ercd = set_flg(FLG4, 0x03);
746 check_ercd(ercd, E_OK);
747
748 check_point(36);
749 ercd = set_flg(FLG4, 0x01);
750 check_ercd(ercd, E_OK);
751
752 check_point(39);
753 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
754 check_ercd(ercd, E_OK);
755
756 check_finish(44);
757 check_point(0);
758}
Note: See TracBrowser for help on using the repository browser.