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