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

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

3.0.0のリリース版に追従

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 599 2016-02-07 03:33:35Z 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 * ALM1: アラームハンドラ
172 * FLG1: TA_NULL属性,初期ビットパターン0x00
173 * FLG2: TA_CLR属性,初期ビットパターン0x01
174 * FLG3: TA_WMUL属性,初期ビットパターン0x00
175 * FLG4: TA_WMUL|TA_TPRI属性,初期ビットパターン0x00
176 *
177 * 【テストシーケンス】
178 *
179 * == TASK1(優å…
180ˆåº¦ï¼šä¸­ï¼‰==
181 * 1: ref_flg(FLG1, &rflg)
182 * assert(rflg.wtskid == TSK_NONE)
183 * assert(rflg.flgptn == 0x00) ... (J-1)
184 * ref_flg(FLG2, &rflg)
185 * assert(rflg.wtskid == TSK_NONE)
186 * assert(rflg.flgptn == 0x01) ... (J-2)
187 * 2: loc_cpu()
188 * set_flg(FLG1, 0x01) -> E_CTX ... (A-1)
189 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-2)
190 * unl_cpu()
191 * dis_dsp()
192 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-3)
193 * ena_dsp()
194 * chg_ipm(TMAX_INTPRI)
195 * wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-4)
196 * chg_ipm(TIPM_ENAALL)
197 * set_flg(0, 0x01) -> E_ID ... (A-2)
198 * wai_flg(0, 0x01, TWF_ORW, &flgptn) -> E_ID ... (D-5)
199 * set_flg(TNUM_FLGID+1, 0x01) -> E_ID ... (A-3)
200 * wai_flg(TNUM_FLGID+1, 0x01, TWF_ORW, &flgptn) -> E_ID ... (D-6)
201 * wai_flg(FLG1, 0x00, TWF_ORW, &flgptn) -> E_PAR ... (D-7)
202 * wai_flg(FLG1, 0x01, 0U, &flgptn) -> E_PAR ... (D-8)
203 * wai_flg(FLG1, 0x01, (TWF_ORW|TWF_ANDW), &flgptn) -> E_PAR ... (D-9)
204 * set_flg(FLG1, 0x00) ... (B-1)
205 * ref_flg(FLG1, &rflg)
206 * assert(rflg.wtskid == TSK_NONE)
207 * assert(rflg.flgptn == 0x00)
208 * set_flg(FLG1, 0x01) ... (B-2)
209 * ref_flg(FLG1, &rflg)
210 * assert(rflg.wtskid == TSK_NONE)
211 * assert(rflg.flgptn == 0x01)
212 * set_flg(FLG1, 0x01) ... (B-3)
213 * ref_flg(FLG1, &rflg)
214 * assert(rflg.wtskid == TSK_NONE)
215 * assert(rflg.flgptn == 0x01)
216 * set_flg(FLG1, 0x02) ... (B-4)
217 * ref_flg(FLG1, &rflg)
218 * assert(rflg.wtskid == TSK_NONE)
219 * assert(rflg.flgptn == 0x03)
220 * clr_flg(FLG1, ~0x01)
221 * set_flg(FLG1, 0x03) ... (B-5)
222 * ref_flg(FLG1, &rflg)
223 * assert(rflg.wtskid == TSK_NONE)
224 * assert(rflg.flgptn == 0x03)
225 * 3: act_tsk(TASK2)
226 * == TASK2(優å…
227ˆåº¦ï¼šé«˜ï¼‰==
228 * 4: wai_flg(FLG1, 0x05, TWF_ORW, &flgptn) ... (E-1)
229 * assert(flgptn == 0x03)
230 * 5: wai_flg(FLG1, 0x04, TWF_ORW, &flgptn) ... (E-2)
231 * == TASK1(続き)==
232 * 6: set_flg(FLG1, 0x04) ... (C-1)
233 * == TASK2(続き)==
234 * 7: assert(flgptn == 0x07)
235 * wai_flg(FLG1, 0x03, TWF_ANDW, &flgptn) ... (E-3)
236 * assert(flgptn == 0x07)
237 * 8: wai_flg(FLG1, 0x0c, TWF_ANDW, &flgptn) ... (E-4)
238 * == TASK1(続き)==
239 * 9: dis_dsp()
240 * set_flg(FLG1, 0x08) ... (C-2)
241 * ref_flg(FLG1, &rflg)
242 * assert(rflg.wtskid == TSK_NONE)
243 * assert(rflg.flgptn == 0x0f)
244 * 10: ena_dsp()
245 * == TASK2(続き)==
246 * 11: assert(flgptn == 0x0f)
247 * wai_flg(FLG2, 0x05, TWF_ORW, &flgptn) ... (F-1)
248 * assert(flgptn == 0x01)
249 * ref_flg(FLG2, &rflg)
250 * assert(rflg.wtskid == TSK_NONE)
251 * assert(rflg.flgptn == 0x00)
252 * set_flg(FLG2, 0x01)
253 * 12: wai_flg(FLG2, 0x04, TWF_ORW, &flgptn) ... (F-2)
254 * == TASK1(続き)==
255 * 13: chg_ipm(TMAX_INTPRI)
256 * set_flg(FLG2, 0x04) ... (C-2)
257 * ref_flg(FLG2, &rflg)
258 * assert(rflg.wtskid == TSK_NONE)
259 * assert(rflg.flgptn == 0x00)
260 * 14: chg_ipm(TIPM_ENAALL)
261 * == TASK2(続き)==
262 * 15: assert(flgptn == 0x05)
263 * ref_flg(FLG2, &rflg)
264 * assert(rflg.wtskid == TSK_NONE)
265 * assert(rflg.flgptn == 0x00)
266 * set_flg(FLG2, 0x03)
267 * wai_flg(FLG2, 0x03, TWF_ANDW, &flgptn) ... (F-3)
268 * assert(flgptn == 0x03)
269 * ref_flg(FLG2, &rflg)
270 * assert(rflg.wtskid == TSK_NONE)
271 * assert(rflg.flgptn == 0x00)
272 * set_flg(FLG2, 0x03)
273 * 16: wai_flg(FLG2, 0x05, TWF_ANDW, &flgptn) ... (F-4)
274 * == TASK1(続き)==
275 * 17: sus_tsk(TASK2)
276 * set_flg(FLG2, 0x04) ... (C-3)
277 * ref_flg(FLG2, &rflg)
278 * assert(rflg.wtskid == TSK_NONE)
279 * assert(rflg.flgptn == 0x00)
280 * 18: rsm_tsk(TASK2)
281 * == TASK2(続き)==
282 * 19: assert(flgptn == 0x07)
283 * 20: wai_flg(FLG2, 0x01, TWF_ORW, &flgptn)
284 * == TASK1(続き)==
285 * 21: wai_flg(FLG2, 0x02, TWF_ORW, &flgptn) -> E_ILUSE ... (G-2)
286 * set_flg(FLG2, 0x02)
287 * wai_flg(FLG2, 0x02, TWF_ORW, &flgptn) -> E_ILUSE ... (G-1)
288 * 22: set_flg(FLG2, 0x01)
289 * == TASK2(続き)==
290 * 23: assert(flgptn == 0x03)
291 * act_tsk(TASK3)
292 * 24: slp_tsk()
293 * == TASK1(続き)==
294 * 25: wai_flg(FLG3, 0x01, TWF_ORW, &flgptn)
295 * == TASK3(優å…
296ˆåº¦ï¼šä½Žï¼‰==
297 * 26: wup_tsk(TASK2)
298 * == TASK2(続き)==
299 * 27: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn) ... (H-1)
300 * == TASK3(続き)==
301 * 28: set_flg(FLG3, 0x02) ... (H-3)
302 * == TASK2(続き)==
303 * 29: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn)
304 * == TASK3(続き)==
305 * 30: set_flg(FLG3, 0x03) ... (H-2)
306 * == TASK1(続き)==
307 * 31: wai_flg(FLG4, 0x01, TWF_ORW, &flgptn)
308 * == TASK3(優å…
309ˆåº¦ï¼šä½Žï¼‰==
310 * 32: set_flg(FLG3, 0x03)
311 * == TASK2(続き)==
312 * 33: wai_flg(FLG4, 0x02, TWF_ORW, &flgptn) ... (I-1)
313 * == TASK3(続き)==
314 * 34: set_flg(FLG4, 0x03) ... (I-2)
315 * == TASK2(続き)==
316 * 35: wai_flg(FLG4, 0x02, TWF_ORW, &flgptn)
317 * == TASK3(続き)==
318 * 36: set_flg(FLG4, 0x01) ... (I-3)
319 * == TASK1(続き)==
320 * 37: clr_flg(FLG3, 0)
321 * sta_alm(ALM1, 10000U)
322 * 38: wai_flg(FLG3, 0x01, TWF_ORW, &flgptn)
323 * == TASK3(続き)==
324 * 39: wai_flg(FLG3, 0x02, TWF_ORW, &flgptn)
325 * == ALM1 ==
326 * 40: wai_flg(FLG1, 0x01, TWF_ORW, &flgptn) -> E_CTX ... (D-1)
327 * set_flg(FLG3, 0x01)
328 * 41: RETURN
329 * == TASK1(続き)==
330 * 42: set_flg(FLG3, 0x02) ... (C-4)
331 * 43: slp_tsk()
332 * == TASK3(続き)==
333 * 44: END
334 */
335
336#include <kernel.h>
337#include <t_syslog.h>
338#include "syssvc/test_svc.h"
339#include "kernel_cfg.h"
340#include "test_flg1.h"
341
342/* DO NOT DELETE THIS LINE -- gentest depends on it. */
343
344void
345alarm1_handler(intptr_t exinf)
346{
347 ER_UINT ercd;
348 FLGPTN flgptn;
349
350 check_point(40);
351 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
352 check_ercd(ercd, E_CTX);
353
354 ercd = set_flg(FLG3, 0x01);
355 check_ercd(ercd, E_OK);
356
357 check_point(41);
358 return;
359
360 check_point(0);
361}
362
363void
364task1(intptr_t exinf)
365{
366 ER_UINT ercd;
367 T_RFLG rflg;
368 FLGPTN flgptn;
369
370 test_start(__FILE__);
371
372 check_point(1);
373 ercd = ref_flg(FLG1, &rflg);
374 check_ercd(ercd, E_OK);
375
376 check_assert(rflg.wtskid == TSK_NONE);
377
378 check_assert(rflg.flgptn == 0x00);
379
380 ercd = ref_flg(FLG2, &rflg);
381 check_ercd(ercd, E_OK);
382
383 check_assert(rflg.wtskid == TSK_NONE);
384
385 check_assert(rflg.flgptn == 0x01);
386
387 check_point(2);
388 ercd = loc_cpu();
389 check_ercd(ercd, E_OK);
390
391 ercd = set_flg(FLG1, 0x01);
392 check_ercd(ercd, E_CTX);
393
394 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
395 check_ercd(ercd, E_CTX);
396
397 ercd = unl_cpu();
398 check_ercd(ercd, E_OK);
399
400 ercd = dis_dsp();
401 check_ercd(ercd, E_OK);
402
403 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
404 check_ercd(ercd, E_CTX);
405
406 ercd = ena_dsp();
407 check_ercd(ercd, E_OK);
408
409 ercd = chg_ipm(TMAX_INTPRI);
410 check_ercd(ercd, E_OK);
411
412 ercd = wai_flg(FLG1, 0x01, TWF_ORW, &flgptn);
413 check_ercd(ercd, E_CTX);
414
415 ercd = chg_ipm(TIPM_ENAALL);
416 check_ercd(ercd, E_OK);
417
418 ercd = set_flg(0, 0x01);
419 check_ercd(ercd, E_ID);
420
421 ercd = wai_flg(0, 0x01, TWF_ORW, &flgptn);
422 check_ercd(ercd, E_ID);
423
424 ercd = set_flg(TNUM_FLGID+1, 0x01);
425 check_ercd(ercd, E_ID);
426
427 ercd = wai_flg(TNUM_FLGID+1, 0x01, TWF_ORW, &flgptn);
428 check_ercd(ercd, E_ID);
429
430 ercd = wai_flg(FLG1, 0x00, TWF_ORW, &flgptn);
431 check_ercd(ercd, E_PAR);
432
433 ercd = wai_flg(FLG1, 0x01, 0U, &flgptn);
434 check_ercd(ercd, E_PAR);
435
436 ercd = wai_flg(FLG1, 0x01, (TWF_ORW|TWF_ANDW), &flgptn);
437 check_ercd(ercd, E_PAR);
438
439 ercd = set_flg(FLG1, 0x00);
440 check_ercd(ercd, E_OK);
441
442 ercd = ref_flg(FLG1, &rflg);
443 check_ercd(ercd, E_OK);
444
445 check_assert(rflg.wtskid == TSK_NONE);
446
447 check_assert(rflg.flgptn == 0x00);
448
449 ercd = set_flg(FLG1, 0x01);
450 check_ercd(ercd, E_OK);
451
452 ercd = ref_flg(FLG1, &rflg);
453 check_ercd(ercd, E_OK);
454
455 check_assert(rflg.wtskid == TSK_NONE);
456
457 check_assert(rflg.flgptn == 0x01);
458
459 ercd = set_flg(FLG1, 0x01);
460 check_ercd(ercd, E_OK);
461
462 ercd = ref_flg(FLG1, &rflg);
463 check_ercd(ercd, E_OK);
464
465 check_assert(rflg.wtskid == TSK_NONE);
466
467 check_assert(rflg.flgptn == 0x01);
468
469 ercd = set_flg(FLG1, 0x02);
470 check_ercd(ercd, E_OK);
471
472 ercd = ref_flg(FLG1, &rflg);
473 check_ercd(ercd, E_OK);
474
475 check_assert(rflg.wtskid == TSK_NONE);
476
477 check_assert(rflg.flgptn == 0x03);
478
479 ercd = clr_flg(FLG1, ~0x01);
480 check_ercd(ercd, E_OK);
481
482 ercd = set_flg(FLG1, 0x03);
483 check_ercd(ercd, E_OK);
484
485 ercd = ref_flg(FLG1, &rflg);
486 check_ercd(ercd, E_OK);
487
488 check_assert(rflg.wtskid == TSK_NONE);
489
490 check_assert(rflg.flgptn == 0x03);
491
492 check_point(3);
493 ercd = act_tsk(TASK2);
494 check_ercd(ercd, E_OK);
495
496 check_point(6);
497 ercd = set_flg(FLG1, 0x04);
498 check_ercd(ercd, E_OK);
499
500 check_point(9);
501 ercd = dis_dsp();
502 check_ercd(ercd, E_OK);
503
504 ercd = set_flg(FLG1, 0x08);
505 check_ercd(ercd, E_OK);
506
507 ercd = ref_flg(FLG1, &rflg);
508 check_ercd(ercd, E_OK);
509
510 check_assert(rflg.wtskid == TSK_NONE);
511
512 check_assert(rflg.flgptn == 0x0f);
513
514 check_point(10);
515 ercd = ena_dsp();
516 check_ercd(ercd, E_OK);
517
518 check_point(13);
519 ercd = chg_ipm(TMAX_INTPRI);
520 check_ercd(ercd, E_OK);
521
522 ercd = set_flg(FLG2, 0x04);
523 check_ercd(ercd, E_OK);
524
525 ercd = ref_flg(FLG2, &rflg);
526 check_ercd(ercd, E_OK);
527
528 check_assert(rflg.wtskid == TSK_NONE);
529
530 check_assert(rflg.flgptn == 0x00);
531
532 check_point(14);
533 ercd = chg_ipm(TIPM_ENAALL);
534 check_ercd(ercd, E_OK);
535
536 check_point(17);
537 ercd = sus_tsk(TASK2);
538 check_ercd(ercd, E_OK);
539
540 ercd = set_flg(FLG2, 0x04);
541 check_ercd(ercd, E_OK);
542
543 ercd = ref_flg(FLG2, &rflg);
544 check_ercd(ercd, E_OK);
545
546 check_assert(rflg.wtskid == TSK_NONE);
547
548 check_assert(rflg.flgptn == 0x00);
549
550 check_point(18);
551 ercd = rsm_tsk(TASK2);
552 check_ercd(ercd, E_OK);
553
554 check_point(21);
555 ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
556 check_ercd(ercd, E_ILUSE);
557
558 ercd = set_flg(FLG2, 0x02);
559 check_ercd(ercd, E_OK);
560
561 ercd = wai_flg(FLG2, 0x02, TWF_ORW, &flgptn);
562 check_ercd(ercd, E_ILUSE);
563
564 check_point(22);
565 ercd = set_flg(FLG2, 0x01);
566 check_ercd(ercd, E_OK);
567
568 check_point(25);
569 ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
570 check_ercd(ercd, E_OK);
571
572 check_point(31);
573 ercd = wai_flg(FLG4, 0x01, TWF_ORW, &flgptn);
574 check_ercd(ercd, E_OK);
575
576 check_point(37);
577 ercd = clr_flg(FLG3, 0);
578 check_ercd(ercd, E_OK);
579
580 ercd = sta_alm(ALM1, 10000U);
581 check_ercd(ercd, E_OK);
582
583 check_point(38);
584 ercd = wai_flg(FLG3, 0x01, TWF_ORW, &flgptn);
585 check_ercd(ercd, E_OK);
586
587 check_point(42);
588 ercd = set_flg(FLG3, 0x02);
589 check_ercd(ercd, E_OK);
590
591 check_point(43);
592 ercd = slp_tsk();
593 check_ercd(ercd, E_OK);
594
595 check_point(0);
596}
597
598void
599task2(intptr_t exinf)
600{
601 ER_UINT ercd;
602 FLGPTN flgptn;
603 T_RFLG rflg;
604
605 check_point(4);
606 ercd = wai_flg(FLG1, 0x05, TWF_ORW, &flgptn);
607 check_ercd(ercd, E_OK);
608
609 check_assert(flgptn == 0x03);
610
611 check_point(5);
612 ercd = wai_flg(FLG1, 0x04, TWF_ORW, &flgptn);
613 check_ercd(ercd, E_OK);
614
615 check_point(7);
616 check_assert(flgptn == 0x07);
617
618 ercd = wai_flg(FLG1, 0x03, TWF_ANDW, &flgptn);
619 check_ercd(ercd, E_OK);
620
621 check_assert(flgptn == 0x07);
622
623 check_point(8);
624 ercd = wai_flg(FLG1, 0x0c, TWF_ANDW, &flgptn);
625 check_ercd(ercd, E_OK);
626
627 check_point(11);
628 check_assert(flgptn == 0x0f);
629
630 ercd = wai_flg(FLG2, 0x05, TWF_ORW, &flgptn);
631 check_ercd(ercd, E_OK);
632
633 check_assert(flgptn == 0x01);
634
635 ercd = ref_flg(FLG2, &rflg);
636 check_ercd(ercd, E_OK);
637
638 check_assert(rflg.wtskid == TSK_NONE);
639
640 check_assert(rflg.flgptn == 0x00);
641
642 ercd = set_flg(FLG2, 0x01);
643 check_ercd(ercd, E_OK);
644
645 check_point(12);
646 ercd = wai_flg(FLG2, 0x04, TWF_ORW, &flgptn);
647 check_ercd(ercd, E_OK);
648
649 check_point(15);
650 check_assert(flgptn == 0x05);
651
652 ercd = ref_flg(FLG2, &rflg);
653 check_ercd(ercd, E_OK);
654
655 check_assert(rflg.wtskid == TSK_NONE);
656
657 check_assert(rflg.flgptn == 0x00);
658
659 ercd = set_flg(FLG2, 0x03);
660 check_ercd(ercd, E_OK);
661
662 ercd = wai_flg(FLG2, 0x03, TWF_ANDW, &flgptn);
663 check_ercd(ercd, E_OK);
664
665 check_assert(flgptn == 0x03);
666
667 ercd = ref_flg(FLG2, &rflg);
668 check_ercd(ercd, E_OK);
669
670 check_assert(rflg.wtskid == TSK_NONE);
671
672 check_assert(rflg.flgptn == 0x00);
673
674 ercd = set_flg(FLG2, 0x03);
675 check_ercd(ercd, E_OK);
676
677 check_point(16);
678 ercd = wai_flg(FLG2, 0x05, TWF_ANDW, &flgptn);
679 check_ercd(ercd, E_OK);
680
681 check_point(19);
682 check_assert(flgptn == 0x07);
683
684 check_point(20);
685 ercd = wai_flg(FLG2, 0x01, TWF_ORW, &flgptn);
686 check_ercd(ercd, E_OK);
687
688 check_point(23);
689 check_assert(flgptn == 0x03);
690
691 ercd = act_tsk(TASK3);
692 check_ercd(ercd, E_OK);
693
694 check_point(24);
695 ercd = slp_tsk();
696 check_ercd(ercd, E_OK);
697
698 check_point(27);
699 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
700 check_ercd(ercd, E_OK);
701
702 check_point(29);
703 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
704 check_ercd(ercd, E_OK);
705
706 check_point(33);
707 ercd = wai_flg(FLG4, 0x02, TWF_ORW, &flgptn);
708 check_ercd(ercd, E_OK);
709
710 check_point(35);
711 ercd = wai_flg(FLG4, 0x02, TWF_ORW, &flgptn);
712 check_ercd(ercd, E_OK);
713
714 check_point(0);
715}
716
717void
718task3(intptr_t exinf)
719{
720 ER_UINT ercd;
721 FLGPTN flgptn;
722
723 check_point(26);
724 ercd = wup_tsk(TASK2);
725 check_ercd(ercd, E_OK);
726
727 check_point(28);
728 ercd = set_flg(FLG3, 0x02);
729 check_ercd(ercd, E_OK);
730
731 check_point(30);
732 ercd = set_flg(FLG3, 0x03);
733 check_ercd(ercd, E_OK);
734
735 check_point(32);
736 ercd = set_flg(FLG3, 0x03);
737 check_ercd(ercd, E_OK);
738
739 check_point(34);
740 ercd = set_flg(FLG4, 0x03);
741 check_ercd(ercd, E_OK);
742
743 check_point(36);
744 ercd = set_flg(FLG4, 0x01);
745 check_ercd(ercd, E_OK);
746
747 check_point(39);
748 ercd = wai_flg(FLG3, 0x02, TWF_ORW, &flgptn);
749 check_ercd(ercd, E_OK);
750
751 check_finish(44);
752 check_point(0);
753}
Note: See TracBrowser for help on using the repository browser.