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

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

3.0.0のリリース版に追従

File size: 17.1 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_dtq1.c 602 2016-02-07 12:22:32Z ertl-hiro $
53 */
54
55/*
56 * データキュー機能のテスト(1)
57 *
58 * 【テストの目的】
59 *
60 * snd_dtqの振舞いのテスト[NGKI1718]
61 * ・snd_dtqに関するすべての要求をテストする.
62 * ・snd_dtq関数のC1カバレッジを達成する.
63 * snd_dtqが呼び出すデータキュー機能内
64部関数のテスト
65 * ・send_data関数のC1カバレッジを達成する.
66 * ・enqueue_data関数のC1カバレッジを達成する.
67 * rcv_dtqの振舞いのテスト[NGKI1751]
68 * ・rcv_dtqに関するすべての要求をテストする.
69 * ・rcv_dtq関数のC1カバレッジを達成する.
70 * rcv_dtqが呼び出すデータキュー機能内
71部関数のテスト
72 * ・receive_data関数のC1カバレッジを達成する.
73 * ・dequeue_data関数のC1カバレッジを達成する.
74 *
75 * 【テスト項
76目】
77 *
78 * (A) snd_dtqのエラー検出
79 * (A-1) 非タスクコンテキストからの呼出し[NGKI1722]
80 * (A-2) CPUロック状æ…
81‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1724ï¼½
82 * (A-3) ディスパッチ保留状æ…
83‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1725ï¼½
84 * (A-3-1) ディスパッチ禁止状æ…
85‹
86 * (A-3-2) 割込み優å…
87ˆåº¦ãƒžã‚¹ã‚¯å…
88¨è§£é™¤ã§ãªã„状æ…
89‹
90 * (A-4) dtqidが不正[NGKI1727]
91 * (A-4-1) 小さすぎる
92 * (A-4-2) 大きすぎる
93 * (A-5) 待
94ち状æ…
95‹ã®å¼·åˆ¶è§£é™¤ï¼»NGKI1732ï¼½
96 * (A-6) タスクの終了要求[NGKI3459]
97 * (A-6-1) 呼び出し時点で終了要求フラグがセット
98 * (A-6-2) 待
99ち状æ…
100‹ã«ãªã£ãŸå¾Œã«çµ‚了要求
101 * (A-7) 待
102ちオブジェクトの削除または再初期化[NGKI1733]
103 * ※ASPカーネルに適用されない要求:
104 * [NGKI1726][NGKI1729][NGKI1730]
105 * (B) snd_dtqの正常系処理
106 * (B-1) 受信待
107ち行列中のタスクを待
108ち解除[NGKI1734]
109 * (B-2) 待
110ち解除されたタスクにE_OKが返る[NGKI1735]
111 * (B-3) データをFIFO順で管理領域に格納[NGKI1736]
112 * (B-3-1) 管理領域が空の時
113 * (B-3-2) 管理領域が空でない時
114 * (B-4) 管理領域にスペースがなく送信待
115ち状æ…
116‹ã«ï¼»NGKI1737ï¼½
117 * (C) snd_dtqのC1カバレッジ
118 * ※ここまでのテストで有効なもの
119 * (A-1)(A-2)(A-3)(A-4-1)(A-4-2)(A-6-1)(B-1)(B-4)
120 * ※(B-1)は(B-3)に代えてもよい
121 * ※(B-1)の分解が必
122要
123 * (C-1) 受信待
124ちタスクを待
125ち解除してタスク切換えが発生
126 * (C-2) 受信待
127ちタスクを待
128ち解除してタスク切換えが発生しない
129 * (D) send_datqのC1カバレッジ
130 * ※ここまでのテストで有効なもの(不足はない)
131 * (B-1)(B-3)(B-4)
132 * (E) enqueue_dataのC1カバレッジ
133 * ※(B-3)の分解が必
134要
135 * (E-1) 管理領域が循環しない(末尾に到達しない)
136 * (E-2) 管理領域が循環(末尾に到達)
137 * (F) rcv_dtqのエラー検出
138 * (F-1) 非タスクコンテキストからの呼出し[NGKI1754]
139 * (F-2) CPUロック状æ…
140‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1755ï¼½
141 * (F-3) ディスパッチ保留状æ…
142‹ã‹ã‚‰ã®å‘¼å‡ºã—ï¼»NGKI1756ï¼½
143 * (F-3-1) ディスパッチ禁止状æ…
144‹
145 * (F-3-2) 割込み優å…
146ˆåº¦ãƒžã‚¹ã‚¯å…
147¨è§£é™¤ã§ãªã„状æ…
148‹
149 * (F-4) dtqidが不正[NGKI1758]
150 * (F-4-1) 小さすぎる
151 * (F-4-2) 大きすぎる
152 * (F-5) 待
153ち状æ…
154‹ã®å¼·åˆ¶è§£é™¤ï¼»NGKI1764ï¼½
155 * (F-6) タスクの終了要求[NGKI3460]
156 * (F-6-1) 呼び出し時点で終了要求フラグがセット
157 * (F-6-2) 待
158ち状æ…
159‹ã«ãªã£ãŸå¾Œã«çµ‚了要求
160 * (F-7) 待
161ちオブジェクトの削除または再初期化[NGKI1765]
162 * ※ASPカーネルに適用されない要求:
163 * [NGKI1757][NGKI1760][NGKI1761][NGKI1762]
164 * (G) rcv_dtqの正常系処理
165 * (G-1) 受信したデータはp_dataが指すメモリ領域に[NGKI3421]
166 * (G-2) 管理領域のå…
167ˆé ­ã®ãƒ‡ãƒ¼ã‚¿ã‚’受信[NGKI1766ï¼½
168 * (G-3) 送信待
169ち行列中のタスクを待
170ち解除[NGKI1767]
171 * (G-4) 待
172ち解除されたタスクにE_OKが返る[NGKI1768]
173 * (G-5) 送信待
174ち行列中のタスクの送信データを受信[NGKI1769]
175 * (G-6) 送信待
176ち行列中のタスクを待
177ち解除[NGKI3422]
178 * (G-7) 待
179ち解除されたタスクにE_OKが返る[NGKI1770]
180 * (G-8) 受信すべきデータがなく受信待
181ち状æ…
182‹ã«ï¼»NGKI1771ï¼½
183 * ※(G-5)(G-6)(G-7)は格納できるデータ数が0の場合のみ発生する条件
184 * (H) rcv_dtqのC1カバレッジ
185 * ※ここまでのテストで有効なもの
186 * (F-1)(F-2)(F-3)(F-4-1)(F-4-2)(F-6-1)(G-2)(G-8)
187 * ※(G-2)は(G-5)に代えてもよい
188 * ※(G-2)の分解が必
189要
190 * (H-1) 送信待
191ちタスクを待
192ち解除してタスク切換えが発生
193 * (H-2) タスク切換えが発生しない
194 * ※(G-8)の分解が必
195要
196 * (H-3) 待
197ち状æ…
198‹ã‹ã‚‰æ­£å¸¸çµ‚了(E_OK)
199 * (H-4) 待
200ち状æ…
201‹ã‹ã‚‰ã‚¨ãƒ©ãƒ¼çµ‚了(E_OK以外) → (A-5)でカバー
202 * (I) receive_datqのC1カバレッジ
203 * ※ここまでのテストで有効なもの
204 * (G-2)(G-3)(G-5)(G-8)
205 * ※(G-2)の分解が必
206要
207 * (I-1) 送信待
208ち行列が空
209 * (I-2) 送信待
210ち行列が空でない → (G-3)でカバー
211 * (J) dequeue_dataのC1カバレッジ
212 * ※(G-2)の分解が必
213要
214 * (J-1) 管理領域が循環しない(末尾に到達しない)
215 * (J-2) 管理領域が循環(末尾に到達)
216 *
217 * 【使用リソース】
218 *
219 * TASK1: 中優å…
220ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ŒTA_ACT属性
221 * TASK2: 高優å…
222ˆåº¦ã‚¿ã‚¹ã‚¯
223 * TASK3: 低優å…
224ˆåº¦ã‚¿ã‚¹ã‚¯
225 * ALM1: アラームハンドラ
226 * DTQ1: TA_NULL属性,格納できるデータ数2
227 * DTQ2: TA_NULL属性,格納できるデータ数0
228 * DTQ3: TA_TPRI属性,格納できるデータ数2 … 使っていない
229 *
230 * 【テストシーケンス】
231 *
232 * == TASK1(優å…
233ˆåº¦ï¼šä¸­ï¼‰==
234 * 1: ref_dtq(DTQ1, &rdtq)
235 * assert(rdtq.stskid == TSK_NONE)
236 * assert(rdtq.rtskid == TSK_NONE)
237 * assert(rdtq.sdtqcnt == 0)
238 * loc_cpu()
239 * snd_dtq(DTQ1, DATA0) -> E_CTX ... (A-2)
240 * rcv_dtq(DTQ1, &data) -> E_CTX ... (F-2)
241 * unl_cpu()
242 * dis_dsp()
243 * snd_dtq(DTQ1, DATA0) -> E_CTX ... (A-3-1)
244 * rcv_dtq(DTQ1, &data) -> E_CTX ... (F-3-1)
245 * ena_dsp()
246 * chg_ipm(TMAX_INTPRI)
247 * snd_dtq(DTQ1, DATA0) -> E_CTX ... (A-3-2)
248 * rcv_dtq(DTQ1, &data) -> E_CTX ... (F-3-2)
249 * chg_ipm(TIPM_ENAALL)
250 * snd_dtq(0, DATA0) -> E_ID ... (A-4-1)
251 * rcv_dtq(0, &data) -> E_ID ... (F-4-1)
252 * snd_dtq(TNUM_DTQID+1, DATA0) -> E_ID ... (A-4-2)
253 * rcv_dtq(TNUM_DTQID+1, &data) -> E_ID ... (F-4-2)
254 * act_tsk(TASK3)
255 * 2: act_tsk(TASK2)
256 * == TASK2(優å…
257ˆåº¦ï¼šé«˜ï¼‰==
258 * 3: rcv_dtq(DTQ1, &data) ... (G-8)(H-3)
259 * == TASK1(続き)==
260 * 4: snd_dtq(DTQ1, DATA1) ... (B-1)(C-1)
261 * == TASK2(続き)== ... (B-2)
262 * 5: assert(data == DATA1) ... (G-1)
263 * 6: slp_tsk()
264 * == TASK1(続き)==
265 * 7: rcv_dtq(DTQ1, &data)
266 * == TASK3(優å…
267ˆåº¦ï¼šä½Žï¼‰==
268 * 8: wup_tsk(TASK2)
269 * == TASK2(続き)==
270 * 9: snd_dtq(DTQ1, DATA2) ... (B-1)(C-2)
271 * 10: slp_tsk()
272 * == TASK1(続き)==
273 * 11: assert(data == DATA2)
274 * snd_dtq(DTQ1, DATA3) ... (B-3-1)(E-1)
275 * ref_dtq(DTQ1, &rdtq)
276 * assert(rdtq.stskid == TSK_NONE)
277 * assert(rdtq.rtskid == TSK_NONE)
278 * assert(rdtq.sdtqcnt == 1)
279 * snd_dtq(DTQ1, DATA4) ... (B-3-2)(E-2)
280 * ref_dtq(DTQ1, &rdtq)
281 * assert(rdtq.stskid == TSK_NONE)
282 * assert(rdtq.rtskid == TSK_NONE)
283 * assert(rdtq.sdtqcnt == 2)
284 * snd_dtq(DTQ1, DATA5) ... (B-4)
285 * == TASK3(続き)==
286 * 12: rcv_dtq(DTQ1, &data) ... (G-2)(G-3)(H-1)(J-1)
287 * == TASK1(続き)== ... (G-4)
288 * 13: slp_tsk()
289 * == TASK3(続き)==
290 * 14: assert(data == DATA3)
291 * rcv_dtq(DTQ1, &data) ... (G-2)(H-2)(I-1)(J-2)
292 * assert(data == DATA4)
293 * rcv_dtq(DTQ1, &data)
294 * assert(data == DATA5)
295 * 15: wup_tsk(TASK1)
296 * == TASK1(続き)==
297 * 16: snd_dtq(DTQ2, DATA1)
298 * == TASK3(続き)==
299 * 17: rcv_dtq(DTQ2, &data) ... (G-5)(G-6)
300 * == TASK1(続き)== ... (G-7)
301 * 18: slp_tsk()
302 * == TASK3(続き)==
303 * 19: assert(data == DATA1)
304 * 20: sta_alm(ALM1, 10000U)
305 * 21: rcv_dtq(DTQ2, &data)
306 * == ALM1 ==
307 * 22: snd_dtq(DTQ2, DATA0) -> E_CTX ... (A-1)
308 * rcv_dtq(DTQ2, &data) -> E_CTX ... (F-1)
309 * psnd_dtq(DTQ2, DATA2)
310 * 23: RETURN
311 * == TASK3(続き)==
312 * 24: assert(data == DATA2)
313 * 25: wup_tsk(TASK1)
314 * == TASK1(続き)==
315 * 26: snd_dtq(DTQ2, DATA0) -> E_RLWAI ... (A-5)
316 * == TASK3(続き)==
317 * 27: rel_wai(TASK1)
318 * == TASK1(続き)==
319 * 28: snd_dtq(DTQ2, DATA0) -> E_DLT ... (A-7)
320 * == TASK3(続き)==
321 * 29: ini_dtq(DTQ2)
322 * == TASK1(続き)==
323 * 30: dis_ter()
324 * 31: snd_dtq(DTQ2, DATA0) -> E_RASTER ... (A-6-2)
325 * == TASK3(続き)==
326 * 32: ras_ter(TASK1)
327 * == TASK1(続き)==
328 * 33: snd_dtq(DTQ2, DATA0) -> E_RASTER ... (A-6-1)
329 * 34: wup_tsk(TASK2)
330 * == TASK2(続き)==
331 * 35: rcv_dtq(DTQ2, &data) -> E_RLWAI ... (F-5)
332 * == TASK1(続き)==
333 * 36: ena_ter()
334 * == TASK3(続き)==
335 * 37: rel_wai(TASK2)
336 * == TASK2(続き)==
337 * 38: rcv_dtq(DTQ2, &data) -> E_DLT ... (F-7)
338 * == TASK3(続き)==
339 * 39: ini_dtq(DTQ2)
340 * == TASK2(続き)==
341 * 40: dis_ter()
342 * 41: rcv_dtq(DTQ2, &data) -> E_RASTER ... (F-6-2)
343 * == TASK3(続き)==
344 * 42: ras_ter(TASK2)
345 * == TASK2(続き)==
346 * 43: rcv_dtq(DTQ2, &data) -> E_RASTER ... (F-6-1)
347 * 44: ena_ter()
348 * == TASK3(続き)==
349 * 45: END
350 */
351
352#include <kernel.h>
353#include <t_syslog.h>
354#include "syssvc/test_svc.h"
355#include "kernel_cfg.h"
356#include "test_dtq1.h"
357
358/* DO NOT DELETE THIS LINE -- gentest depends on it. */
359
360void
361alarm1_handler(intptr_t exinf)
362{
363 ER_UINT ercd;
364 intptr_t data;
365
366 check_point(22);
367 ercd = snd_dtq(DTQ2, DATA0);
368 check_ercd(ercd, E_CTX);
369
370 ercd = rcv_dtq(DTQ2, &data);
371 check_ercd(ercd, E_CTX);
372
373 ercd = psnd_dtq(DTQ2, DATA2);
374 check_ercd(ercd, E_OK);
375
376 check_point(23);
377 return;
378
379 check_point(0);
380}
381
382void
383task1(intptr_t exinf)
384{
385 ER_UINT ercd;
386 T_RDTQ rdtq;
387 intptr_t data;
388
389 test_start(__FILE__);
390
391 check_point(1);
392 ercd = ref_dtq(DTQ1, &rdtq);
393 check_ercd(ercd, E_OK);
394
395 check_assert(rdtq.stskid == TSK_NONE);
396
397 check_assert(rdtq.rtskid == TSK_NONE);
398
399 check_assert(rdtq.sdtqcnt == 0);
400
401 ercd = loc_cpu();
402 check_ercd(ercd, E_OK);
403
404 ercd = snd_dtq(DTQ1, DATA0);
405 check_ercd(ercd, E_CTX);
406
407 ercd = rcv_dtq(DTQ1, &data);
408 check_ercd(ercd, E_CTX);
409
410 ercd = unl_cpu();
411 check_ercd(ercd, E_OK);
412
413 ercd = dis_dsp();
414 check_ercd(ercd, E_OK);
415
416 ercd = snd_dtq(DTQ1, DATA0);
417 check_ercd(ercd, E_CTX);
418
419 ercd = rcv_dtq(DTQ1, &data);
420 check_ercd(ercd, E_CTX);
421
422 ercd = ena_dsp();
423 check_ercd(ercd, E_OK);
424
425 ercd = chg_ipm(TMAX_INTPRI);
426 check_ercd(ercd, E_OK);
427
428 ercd = snd_dtq(DTQ1, DATA0);
429 check_ercd(ercd, E_CTX);
430
431 ercd = rcv_dtq(DTQ1, &data);
432 check_ercd(ercd, E_CTX);
433
434 ercd = chg_ipm(TIPM_ENAALL);
435 check_ercd(ercd, E_OK);
436
437 ercd = snd_dtq(0, DATA0);
438 check_ercd(ercd, E_ID);
439
440 ercd = rcv_dtq(0, &data);
441 check_ercd(ercd, E_ID);
442
443 ercd = snd_dtq(TNUM_DTQID+1, DATA0);
444 check_ercd(ercd, E_ID);
445
446 ercd = rcv_dtq(TNUM_DTQID+1, &data);
447 check_ercd(ercd, E_ID);
448
449 ercd = act_tsk(TASK3);
450 check_ercd(ercd, E_OK);
451
452 check_point(2);
453 ercd = act_tsk(TASK2);
454 check_ercd(ercd, E_OK);
455
456 check_point(4);
457 ercd = snd_dtq(DTQ1, DATA1);
458 check_ercd(ercd, E_OK);
459
460 check_point(7);
461 ercd = rcv_dtq(DTQ1, &data);
462 check_ercd(ercd, E_OK);
463
464 check_point(11);
465 check_assert(data == DATA2);
466
467 ercd = snd_dtq(DTQ1, DATA3);
468 check_ercd(ercd, E_OK);
469
470 ercd = ref_dtq(DTQ1, &rdtq);
471 check_ercd(ercd, E_OK);
472
473 check_assert(rdtq.stskid == TSK_NONE);
474
475 check_assert(rdtq.rtskid == TSK_NONE);
476
477 check_assert(rdtq.sdtqcnt == 1);
478
479 ercd = snd_dtq(DTQ1, DATA4);
480 check_ercd(ercd, E_OK);
481
482 ercd = ref_dtq(DTQ1, &rdtq);
483 check_ercd(ercd, E_OK);
484
485 check_assert(rdtq.stskid == TSK_NONE);
486
487 check_assert(rdtq.rtskid == TSK_NONE);
488
489 check_assert(rdtq.sdtqcnt == 2);
490
491 ercd = snd_dtq(DTQ1, DATA5);
492 check_ercd(ercd, E_OK);
493
494 check_point(13);
495 ercd = slp_tsk();
496 check_ercd(ercd, E_OK);
497
498 check_point(16);
499 ercd = snd_dtq(DTQ2, DATA1);
500 check_ercd(ercd, E_OK);
501
502 check_point(18);
503 ercd = slp_tsk();
504 check_ercd(ercd, E_OK);
505
506 check_point(26);
507 ercd = snd_dtq(DTQ2, DATA0);
508 check_ercd(ercd, E_RLWAI);
509
510 check_point(28);
511 ercd = snd_dtq(DTQ2, DATA0);
512 check_ercd(ercd, E_DLT);
513
514 check_point(30);
515 ercd = dis_ter();
516 check_ercd(ercd, E_OK);
517
518 check_point(31);
519 ercd = snd_dtq(DTQ2, DATA0);
520 check_ercd(ercd, E_RASTER);
521
522 check_point(33);
523 ercd = snd_dtq(DTQ2, DATA0);
524 check_ercd(ercd, E_RASTER);
525
526 check_point(34);
527 ercd = wup_tsk(TASK2);
528 check_ercd(ercd, E_OK);
529
530 check_point(36);
531 ercd = ena_ter();
532 check_ercd(ercd, E_OK);
533
534 check_point(0);
535}
536
537void
538task2(intptr_t exinf)
539{
540 ER_UINT ercd;
541 intptr_t data;
542
543 check_point(3);
544 ercd = rcv_dtq(DTQ1, &data);
545 check_ercd(ercd, E_OK);
546
547 check_point(5);
548 check_assert(data == DATA1);
549
550 check_point(6);
551 ercd = slp_tsk();
552 check_ercd(ercd, E_OK);
553
554 check_point(9);
555 ercd = snd_dtq(DTQ1, DATA2);
556 check_ercd(ercd, E_OK);
557
558 check_point(10);
559 ercd = slp_tsk();
560 check_ercd(ercd, E_OK);
561
562 check_point(35);
563 ercd = rcv_dtq(DTQ2, &data);
564 check_ercd(ercd, E_RLWAI);
565
566 check_point(38);
567 ercd = rcv_dtq(DTQ2, &data);
568 check_ercd(ercd, E_DLT);
569
570 check_point(40);
571 ercd = dis_ter();
572 check_ercd(ercd, E_OK);
573
574 check_point(41);
575 ercd = rcv_dtq(DTQ2, &data);
576 check_ercd(ercd, E_RASTER);
577
578 check_point(43);
579 ercd = rcv_dtq(DTQ2, &data);
580 check_ercd(ercd, E_RASTER);
581
582 check_point(44);
583 ercd = ena_ter();
584 check_ercd(ercd, E_OK);
585
586 check_point(0);
587}
588
589void
590task3(intptr_t exinf)
591{
592 ER_UINT ercd;
593 intptr_t data;
594
595 check_point(8);
596 ercd = wup_tsk(TASK2);
597 check_ercd(ercd, E_OK);
598
599 check_point(12);
600 ercd = rcv_dtq(DTQ1, &data);
601 check_ercd(ercd, E_OK);
602
603 check_point(14);
604 check_assert(data == DATA3);
605
606 ercd = rcv_dtq(DTQ1, &data);
607 check_ercd(ercd, E_OK);
608
609 check_assert(data == DATA4);
610
611 ercd = rcv_dtq(DTQ1, &data);
612 check_ercd(ercd, E_OK);
613
614 check_assert(data == DATA5);
615
616 check_point(15);
617 ercd = wup_tsk(TASK1);
618 check_ercd(ercd, E_OK);
619
620 check_point(17);
621 ercd = rcv_dtq(DTQ2, &data);
622 check_ercd(ercd, E_OK);
623
624 check_point(19);
625 check_assert(data == DATA1);
626
627 check_point(20);
628 ercd = sta_alm(ALM1, 10000U);
629 check_ercd(ercd, E_OK);
630
631 check_point(21);
632 ercd = rcv_dtq(DTQ2, &data);
633 check_ercd(ercd, E_OK);
634
635 check_point(24);
636 check_assert(data == DATA2);
637
638 check_point(25);
639 ercd = wup_tsk(TASK1);
640 check_ercd(ercd, E_OK);
641
642 check_point(27);
643 ercd = rel_wai(TASK1);
644 check_ercd(ercd, E_OK);
645
646 check_point(29);
647 ercd = ini_dtq(DTQ2);
648 check_ercd(ercd, E_OK);
649
650 check_point(32);
651 ercd = ras_ter(TASK1);
652 check_ercd(ercd, E_OK);
653
654 check_point(37);
655 ercd = rel_wai(TASK2);
656 check_ercd(ercd, E_OK);
657
658 check_point(39);
659 ercd = ini_dtq(DTQ2);
660 check_ercd(ercd, E_OK);
661
662 check_point(42);
663 ercd = ras_ter(TASK2);
664 check_ercd(ercd, E_OK);
665
666 check_finish(45);
667 check_point(0);
668}
Note: See TracBrowser for help on using the repository browser.