source: rtos_arduino/trunk/asp_1.9.2/test/test_sem1.c@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 15.4 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2008-2014 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_sem1.c 2606 2014-01-11 14:15:55Z ertl-hiro $
53 */
54
55/*
56 * セマフォ機能のテスト(1)
57 *
58 * 【テストの目的】
59 *
60 * sig_sem,wai_sem,CRE_SEMを網羅
61的にテストする.
62 * ただし,CRE_SEMのエラーのテストは除く.
63 *
64 * 【テスト項
65目】
66 *
67 * (A) sig_semの静的エラーのテスト
68 * (A-1) 非タスクコンテキストからの呼出し
69 * (A-2) CPUロック状æ…
70‹ã‹ã‚‰ã®å‘¼å‡ºã—
71 * (A-3) semidが不正(小さすぎる)
72 * (A-4) semidが不正(大きすぎる)
73 * (B) sig_semによりセマフォ待
74ち状æ…
75‹ã®ã‚¿ã‚¹ã‚¯ãŒå¾…
76ち解除される
77 * (B-1) 待
78ち解除されたタスクに切り換わる
79 * (B-2) ディスパッチ保留状æ…
80‹ã§ï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
81 * (B-3) 待
82ち解除されたタスクが強制待
83ち状æ…
84‹ã§ï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
85 * (B-4) 待
86ち解除されたタスクが優å…
87ˆåº¦ãŒä½Žãï¼Œåˆ‡ã‚Šæ›ã‚ã‚‰ãªã„
88 * (C) sig_semによりセマフォの資源数が1増える
89 * (C-1) セマフォの資源数が0から1になる
90 * (C-2) セマフォの資源数が1から2になる
91 * (D) sig_semがE_QOVRエラーとなる
92 * (D-1) セマフォの最大資源数が1の時
93 * (D-2) セマフォの最大資源数が2の時
94 * (E) wai_semの静的エラーのテスト
95 * (E-1) 非タスクコンテキストからの呼出し
96 * (E-2) CPUロック状æ…
97‹ã‹ã‚‰ã®å‘¼å‡ºã—
98 * (E-3) ディスパッチ禁止状æ…
99‹ã‹ã‚‰ã®å‘¼å‡ºã—
100 * (E-4) 割込み優å…
101ˆåº¦ãƒžã‚¹ã‚¯å…
102¨è§£é™¤ã§ãªã„状æ…
103‹ã‹ã‚‰ã®å‘¼å‡ºã—
104 * (E-5) semidが不正(小さすぎる)
105 * (E-6) semidが不正(大きすぎる)
106 * (F) wai_semによりセマフォの資源数が1減る
107 * (F-1) セマフォの資源数が1から0になる
108 * (F-2) セマフォの資源数が2から1になる
109 * (G) wai_semによりセマフォ待
110ち状æ…
111‹ã«ãªã‚‹
112 * (G-1) TA_TNULL属性のセマフォで,待
113っているタスクがなかった場合
114 * (G-2) TA_TNULL属性のセマフォで,待
115っているタスクがあった場合
116 * (G-3) TA_TPRI属性のセマフォで,待
117っているタスクがなかった場合
118 * (G-4) TA_TPRI属性のセマフォで,優å…
119ˆåº¦ãŒé«˜ã„タスクが待
120っている場合
121 * (G-5) TA_TPRI属性のセマフォで,優å…
122ˆåº¦ãŒåŒã˜ã‚¿ã‚¹ã‚¯ãŒå¾…
123っている場合
124 * (G-6) TA_TPRI属性のセマフォで,優å…
125ˆåº¦ãŒä½Žã„タスクが待
126っている場合
127 * (H) セマフォ待
128ち状æ…
129‹ãŒå¼·åˆ¶è§£é™¤ã•ã‚Œã‚‹
130 * (I) セマフォ待
131ち状æ…
132‹ã®é–“にセマフォが初期化される
133 * (J) セマフォの資源数の初期値が正しく設定される
134 * (J-1) セマフォの資源数の初期値が0
135 * (J-2) セマフォの資源数の初期値が1
136 * (J-3) セマフォの資源数の初期値が2
137 *
138 * 【使用リソース】
139 *
140 * TASK1: 中優å…
141ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ŒTA_ACT属性
142 * TASK2: 高優å…
143ˆåº¦ã‚¿ã‚¹ã‚¯
144 * TASK3: 低優å…
145ˆåº¦ã‚¿ã‚¹ã‚¯
146 * TASK4: 中優å…
147ˆåº¦ã‚¿ã‚¹ã‚¯
148 * TASK5: 中優å…
149ˆåº¦ã‚¿ã‚¹ã‚¯
150 * ALM1: アラームハンドラ
151 * SEM1: TA_NULL属性,初期資源数1,最大資源数1
152 * SEM2: TA_NULL属性,初期資源数2,最大資源数2
153 * SEM3: TA_TPRI属性,初期資源数0,最大資源数1
154 *
155 * 【テストシーケンス】
156 *
157 * == TASK1(優å…
158ˆåº¦ï¼šä¸­ï¼‰==
159 * 1: ref_sem(SEM1, &rsem)
160 * assert(rsem.wtskid == TSK_NONE)
161 * assert(rsem.semcnt == 1) ... (J-2)
162 * ref_sem(SEM2, &rsem)
163 * assert(rsem.wtskid == TSK_NONE)
164 * assert(rsem.semcnt == 2) ... (J-3)
165 * ref_sem(SEM3, &rsem)
166 * assert(rsem.wtskid == TSK_NONE)
167 * assert(rsem.semcnt == 0) ... (J-1)
168 * 2: loc_cpu()
169 * sig_sem(SEM1) -> E_CTX ... (A-2)
170 * wai_sem(SEM1) -> E_CTX ... (E-2)
171 * unl_cpu()
172 * dis_dsp()
173 * wai_sem(SEM1) -> E_CTX ... (E-3)
174 * ena_dsp()
175 * chg_ipm(TMAX_INTPRI)
176 * wai_sem(SEM1) -> E_CTX ... (E-4)
177 * chg_ipm(TIPM_ENAALL)
178 * sig_sem(0) -> E_ID ... (A-3)
179 * wai_sem(0) -> E_ID ... (E-5)
180 * sig_sem(TNUM_SEMID+1) -> E_ID ... (A-4)
181 * wai_sem(TNUM_SEMID+1) -> E_ID ... (E-6)
182 * 3: act_tsk(TASK3)
183 * 4: slp_tsk()
184 * == TASK3(優å…
185ˆåº¦ï¼šä½Žï¼‰==
186 * 5: wai_sem(SEM1) ... (F-1)
187 * 6: ref_sem(SEM1, &rsem)
188 * assert(rsem.wtskid == TSK_NONE)
189 * assert(rsem.semcnt == 0)
190 * 7: sta_alm(ALM1, 10)
191 * 8: wai_sem(SEM1) ... (G-1)
192 * == ALM1 ==
193 * 9: sig_sem(SEM1) -> E_CTX ... (A-1)
194 * wai_sem(SEM1) -> E_CTX ... (E-1)
195 * 10: iwup_tsk(TASK1)
196 * 11: RETURN
197 * == TASK1(続き)==
198 * 12: act_tsk(TASK2)
199 * == TASK2(優å…
200ˆåº¦ï¼šé«˜ï¼‰==
201 * 13: wai_sem(SEM1) ... (G-2)
202 * == TASK1(続き)==
203 * 14: ref_sem(SEM1, &rsem)
204 * assert(rsem.wtskid == TASK3)
205 * assert(rsem.semcnt == 0)
206 * 15: sig_sem(SEM1) ... (B-4)
207 * 16: sig_sem(SEM1) ... (B-1)
208 * == TASK2(続き)==
209 * 17: wai_sem(SEM1) ... (G-1)
210 * == TASK1(続き)==
211 * 18: dis_dsp()
212 * 19: sig_sem(SEM1) ... (B-2)
213 * 20: ena_dsp()
214 * == TASK2(続き)==
215 * 21: wai_sem(SEM1) ... (G-1)
216 * == TASK1(続き)==
217 * 22: sus_tsk(TASK2)
218 * 23: sig_sem(SEM1) ... (B-3)
219 * 24: sig_sem(SEM1) ... (C-1)
220 * 25: sig_sem(SEM1) -> E_QOVR ... (D-1)
221 * 26: ref_sem(SEM1, &rsem)
222 * assert(rsem.wtskid == TSK_NONE)
223 * assert(rsem.semcnt == 1)
224 * 27: rsm_tsk(TASK2)
225 * == TASK2(続き)==
226 * 28: wai_sem(SEM2) ... (F-2)
227 * 29: ref_sem(SEM2, &rsem)
228 * assert(rsem.wtskid == TSK_NONE)
229 * assert(rsem.semcnt == 1)
230 * 30: wai_sem(SEM2) ... (F-1)
231 * 31: wai_sem(SEM2) ... (G-1)
232 * == TASK1(続き)==
233 * 32: sig_sem(SEM2) ... (B-1)
234 * == TASK2(続き)==
235 * 33: wai_sem(SEM3) ... (G-3)
236 * == TASK1(続き)==
237 * 34: sig_sem(SEM2) ... (C-1)
238 * 35: sig_sem(SEM2) ... (C-2)
239 * 36: ref_sem(SEM2, &rsem)
240 * assert(rsem.wtskid == TSK_NONE)
241 * assert(rsem.semcnt == 2)
242 * 37: sig_sem(SEM2) -> E_QOVR ... (D-2)
243 * 38: ref_sem(SEM2, &rsem)
244 * assert(rsem.wtskid == TSK_NONE)
245 * assert(rsem.semcnt == 2)
246 * 39: tslp_tsk(10) -> E_TMOUT
247 * == TASK3(続き)==
248 * 40: wai_sem(SEM3) ... (G-4)
249 * == TASK1(続き)==
250 * 41: act_tsk(TASK4)
251 * 42: act_tsk(TASK5)
252 * 43: rot_rdq(TPRI_SELF)
253 * == TASK4(優å…
254ˆåº¦ï¼šä¸­ï¼‰==
255 * 44: wai_sem(SEM3) ... (G-6)
256 * == TASK5(優å…
257ˆåº¦ï¼šä¸­ï¼‰==
258 * 45: wai_sem(SEM3) ... (G-5)
259 * == TASK1(続き)==
260 * 46: sig_sem(SEM3) ... (B-1)
261 * == TASK2(続き)==
262 * 47: wai_sem(SEM1)
263 * wai_sem(SEM1) -> E_RLWAI
264 * == TASK1(続き)==
265 * 48: sig_sem(SEM3) ... (B-4)
266 * 49: tslp_tsk(10) -> E_TMOUT
267 * == TASK4(続き)==
268 * 50: ext_tsk() -> noreturn
269 * == TASK1(続き)==
270 * 51: sig_sem(SEM3) ... (B-4)
271 * 52: tslp_tsk(10) -> E_TMOUT
272 * == TASK5(続き)==
273 * 53: ext_tsk() -> noreturn
274 * == TASK1(続き)==
275 * 54: sig_sem(SEM3) ... (B-4)
276 * 55: tslp_tsk(10) -> E_TMOUT
277 * == TASK3(続き)==
278 * 56: ext_tsk() -> noreturn
279 * == TASK1(続き)==
280 * 57: rel_wai(TASK2) ... (H)
281 * == TASK2(続き)==
282 * 58: wai_sem(SEM1) -> E_DLT
283 * == TASK1(続き)==
284 * 59: ini_sem(SEM1) ... (I)
285 * == TASK2(続き)==
286 * 60: ext_tsk() -> noreturn
287 * == TASK1(続き)==
288 * 61: END
289 */
290
291#include <kernel.h>
292#include <test_lib.h>
293#include <t_syslog.h>
294#include "kernel_cfg.h"
295#include "test_sem1.h"
296
297/* DO NOT DELETE THIS LINE -- gentest depends on it. */
298
299void
300alarm1_handler(intptr_t exinf)
301{
302 ER_UINT ercd;
303
304 check_point(9);
305 ercd = sig_sem(SEM1);
306 check_ercd(ercd, E_CTX);
307
308 ercd = wai_sem(SEM1);
309 check_ercd(ercd, E_CTX);
310
311 check_point(10);
312 ercd = iwup_tsk(TASK1);
313 check_ercd(ercd, E_OK);
314
315 check_point(11);
316 return;
317
318 check_point(0);
319}
320
321void
322task1(intptr_t exinf)
323{
324 ER_UINT ercd;
325 T_RSEM rsem;
326
327 test_start(__FILE__);
328
329 check_point(1);
330 ercd = ref_sem(SEM1, &rsem);
331 check_ercd(ercd, E_OK);
332
333 check_assert(rsem.wtskid == TSK_NONE);
334
335 check_assert(rsem.semcnt == 1);
336
337 ercd = ref_sem(SEM2, &rsem);
338 check_ercd(ercd, E_OK);
339
340 check_assert(rsem.wtskid == TSK_NONE);
341
342 check_assert(rsem.semcnt == 2);
343
344 ercd = ref_sem(SEM3, &rsem);
345 check_ercd(ercd, E_OK);
346
347 check_assert(rsem.wtskid == TSK_NONE);
348
349 check_assert(rsem.semcnt == 0);
350
351 check_point(2);
352 ercd = loc_cpu();
353 check_ercd(ercd, E_OK);
354
355 ercd = sig_sem(SEM1);
356 check_ercd(ercd, E_CTX);
357
358 ercd = wai_sem(SEM1);
359 check_ercd(ercd, E_CTX);
360
361 ercd = unl_cpu();
362 check_ercd(ercd, E_OK);
363
364 ercd = dis_dsp();
365 check_ercd(ercd, E_OK);
366
367 ercd = wai_sem(SEM1);
368 check_ercd(ercd, E_CTX);
369
370 ercd = ena_dsp();
371 check_ercd(ercd, E_OK);
372
373 ercd = chg_ipm(TMAX_INTPRI);
374 check_ercd(ercd, E_OK);
375
376 ercd = wai_sem(SEM1);
377 check_ercd(ercd, E_CTX);
378
379 ercd = chg_ipm(TIPM_ENAALL);
380 check_ercd(ercd, E_OK);
381
382 ercd = sig_sem(0);
383 check_ercd(ercd, E_ID);
384
385 ercd = wai_sem(0);
386 check_ercd(ercd, E_ID);
387
388 ercd = sig_sem(TNUM_SEMID+1);
389 check_ercd(ercd, E_ID);
390
391 ercd = wai_sem(TNUM_SEMID+1);
392 check_ercd(ercd, E_ID);
393
394 check_point(3);
395 ercd = act_tsk(TASK3);
396 check_ercd(ercd, E_OK);
397
398 check_point(4);
399 ercd = slp_tsk();
400 check_ercd(ercd, E_OK);
401
402 check_point(12);
403 ercd = act_tsk(TASK2);
404 check_ercd(ercd, E_OK);
405
406 check_point(14);
407 ercd = ref_sem(SEM1, &rsem);
408 check_ercd(ercd, E_OK);
409
410 check_assert(rsem.wtskid == TASK3);
411
412 check_assert(rsem.semcnt == 0);
413
414 check_point(15);
415 ercd = sig_sem(SEM1);
416 check_ercd(ercd, E_OK);
417
418 check_point(16);
419 ercd = sig_sem(SEM1);
420 check_ercd(ercd, E_OK);
421
422 check_point(18);
423 ercd = dis_dsp();
424 check_ercd(ercd, E_OK);
425
426 check_point(19);
427 ercd = sig_sem(SEM1);
428 check_ercd(ercd, E_OK);
429
430 check_point(20);
431 ercd = ena_dsp();
432 check_ercd(ercd, E_OK);
433
434 check_point(22);
435 ercd = sus_tsk(TASK2);
436 check_ercd(ercd, E_OK);
437
438 check_point(23);
439 ercd = sig_sem(SEM1);
440 check_ercd(ercd, E_OK);
441
442 check_point(24);
443 ercd = sig_sem(SEM1);
444 check_ercd(ercd, E_OK);
445
446 check_point(25);
447 ercd = sig_sem(SEM1);
448 check_ercd(ercd, E_QOVR);
449
450 check_point(26);
451 ercd = ref_sem(SEM1, &rsem);
452 check_ercd(ercd, E_OK);
453
454 check_assert(rsem.wtskid == TSK_NONE);
455
456 check_assert(rsem.semcnt == 1);
457
458 check_point(27);
459 ercd = rsm_tsk(TASK2);
460 check_ercd(ercd, E_OK);
461
462 check_point(32);
463 ercd = sig_sem(SEM2);
464 check_ercd(ercd, E_OK);
465
466 check_point(34);
467 ercd = sig_sem(SEM2);
468 check_ercd(ercd, E_OK);
469
470 check_point(35);
471 ercd = sig_sem(SEM2);
472 check_ercd(ercd, E_OK);
473
474 check_point(36);
475 ercd = ref_sem(SEM2, &rsem);
476 check_ercd(ercd, E_OK);
477
478 check_assert(rsem.wtskid == TSK_NONE);
479
480 check_assert(rsem.semcnt == 2);
481
482 check_point(37);
483 ercd = sig_sem(SEM2);
484 check_ercd(ercd, E_QOVR);
485
486 check_point(38);
487 ercd = ref_sem(SEM2, &rsem);
488 check_ercd(ercd, E_OK);
489
490 check_assert(rsem.wtskid == TSK_NONE);
491
492 check_assert(rsem.semcnt == 2);
493
494 check_point(39);
495 ercd = tslp_tsk(10);
496 check_ercd(ercd, E_TMOUT);
497
498 check_point(41);
499 ercd = act_tsk(TASK4);
500 check_ercd(ercd, E_OK);
501
502 check_point(42);
503 ercd = act_tsk(TASK5);
504 check_ercd(ercd, E_OK);
505
506 check_point(43);
507 ercd = rot_rdq(TPRI_SELF);
508 check_ercd(ercd, E_OK);
509
510 check_point(46);
511 ercd = sig_sem(SEM3);
512 check_ercd(ercd, E_OK);
513
514 check_point(48);
515 ercd = sig_sem(SEM3);
516 check_ercd(ercd, E_OK);
517
518 check_point(49);
519 ercd = tslp_tsk(10);
520 check_ercd(ercd, E_TMOUT);
521
522 check_point(51);
523 ercd = sig_sem(SEM3);
524 check_ercd(ercd, E_OK);
525
526 check_point(52);
527 ercd = tslp_tsk(10);
528 check_ercd(ercd, E_TMOUT);
529
530 check_point(54);
531 ercd = sig_sem(SEM3);
532 check_ercd(ercd, E_OK);
533
534 check_point(55);
535 ercd = tslp_tsk(10);
536 check_ercd(ercd, E_TMOUT);
537
538 check_point(57);
539 ercd = rel_wai(TASK2);
540 check_ercd(ercd, E_OK);
541
542 check_point(59);
543 ercd = ini_sem(SEM1);
544 check_ercd(ercd, E_OK);
545
546 check_finish(61);
547 check_point(0);
548}
549
550void
551task2(intptr_t exinf)
552{
553 ER_UINT ercd;
554 T_RSEM rsem;
555
556 check_point(13);
557 ercd = wai_sem(SEM1);
558 check_ercd(ercd, E_OK);
559
560 check_point(17);
561 ercd = wai_sem(SEM1);
562 check_ercd(ercd, E_OK);
563
564 check_point(21);
565 ercd = wai_sem(SEM1);
566 check_ercd(ercd, E_OK);
567
568 check_point(28);
569 ercd = wai_sem(SEM2);
570 check_ercd(ercd, E_OK);
571
572 check_point(29);
573 ercd = ref_sem(SEM2, &rsem);
574 check_ercd(ercd, E_OK);
575
576 check_assert(rsem.wtskid == TSK_NONE);
577
578 check_assert(rsem.semcnt == 1);
579
580 check_point(30);
581 ercd = wai_sem(SEM2);
582 check_ercd(ercd, E_OK);
583
584 check_point(31);
585 ercd = wai_sem(SEM2);
586 check_ercd(ercd, E_OK);
587
588 check_point(33);
589 ercd = wai_sem(SEM3);
590 check_ercd(ercd, E_OK);
591
592 check_point(47);
593 ercd = wai_sem(SEM1);
594 check_ercd(ercd, E_OK);
595
596 ercd = wai_sem(SEM1);
597 check_ercd(ercd, E_RLWAI);
598
599 check_point(58);
600 ercd = wai_sem(SEM1);
601 check_ercd(ercd, E_DLT);
602
603 check_point(60);
604 ercd = ext_tsk();
605
606 check_point(0);
607}
608
609void
610task3(intptr_t exinf)
611{
612 ER_UINT ercd;
613 T_RSEM rsem;
614
615 check_point(5);
616 ercd = wai_sem(SEM1);
617 check_ercd(ercd, E_OK);
618
619 check_point(6);
620 ercd = ref_sem(SEM1, &rsem);
621 check_ercd(ercd, E_OK);
622
623 check_assert(rsem.wtskid == TSK_NONE);
624
625 check_assert(rsem.semcnt == 0);
626
627 check_point(7);
628 ercd = sta_alm(ALM1, 10);
629 check_ercd(ercd, E_OK);
630
631 check_point(8);
632 ercd = wai_sem(SEM1);
633 check_ercd(ercd, E_OK);
634
635 check_point(40);
636 ercd = wai_sem(SEM3);
637 check_ercd(ercd, E_OK);
638
639 check_point(56);
640 ercd = ext_tsk();
641
642 check_point(0);
643}
644
645void
646task4(intptr_t exinf)
647{
648 ER_UINT ercd;
649
650 check_point(44);
651 ercd = wai_sem(SEM3);
652 check_ercd(ercd, E_OK);
653
654 check_point(50);
655 ercd = ext_tsk();
656
657 check_point(0);
658}
659
660void
661task5(intptr_t exinf)
662{
663 ER_UINT ercd;
664
665 check_point(45);
666 ercd = wai_sem(SEM3);
667 check_ercd(ercd, E_OK);
668
669 check_point(53);
670 ercd = ext_tsk();
671
672 check_point(0);
673}
Note: See TracBrowser for help on using the repository browser.