source: asp_ewarm/asp-1.7.0/test/test_sem1.c@ 61

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

ASP for EWARM のコミット.

File size: 14.3 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2008,2009 by Embedded and Real-Time Systems Laboratory
6 * Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
9 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
10 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
11 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
12 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
13 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
14 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
15 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
16ƒƒ“ƒgi—˜—p
17 * ŽÒƒ}ƒjƒ…
18ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
19 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
20 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
21 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
22 * ‚ƁD
23 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
24ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
25ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
26 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
27 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
28 * •ñ‚·‚邱‚ƁD
29 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
30 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
31 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
32 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
33 * –Ɛӂ·‚邱‚ƁD
34 *
35 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
36 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
37 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
38 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
39 * ‚̐ӔC‚𕉂í‚È‚¢D
40 *
41 * @(#) $Id: test_sem1.c 1577 2009-05-31 14:30:51Z ertl-hiro $
42 */
43
44/*
45 * ƒZƒ}ƒtƒH‹@”\‚̃eƒXƒg(1)
46 *
47 * yƒeƒXƒg‚Ì–Ú“Iz
48 *
49 * sig_semCwai_semCCRE_SEM‚ð–Ô—…
50“I‚ɃeƒXƒg‚·‚éD
51 * ‚½‚¾‚µCCRE_SEM‚̃Gƒ‰[‚̃eƒXƒg‚͏œ‚­D
52 *
53 * yƒeƒXƒg€–ځz
54 *
55 * (A) sig_sem‚̐ÓIƒGƒ‰[‚̃eƒXƒg
56 * (A-1) ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚ç‚̌ďo‚µ
57 * (A-2) CPUƒƒbƒNó‘Ô‚©‚ç‚̌ďo‚µ
58 * (A-3) semid‚ª•s³i¬‚³‚·‚¬‚éj
59 * (A-4) semid‚ª•s³i‘å‚«‚·‚¬‚éj
60 * (B) sig_sem‚É‚æ‚èƒZƒ}ƒtƒH‘Ò‚¿ó‘Ԃ̃^ƒXƒN‚ª‘Ò‚¿‰ðœ‚³‚ê‚é
61 * (B-1) ‘Ò‚¿‰ðœ‚³‚ꂽƒ^ƒXƒN‚ɐ؂芷‚í‚é
62 * (B-2) ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘ԂŁCØ‚芷‚í‚ç‚È‚¢
63 * (B-3) ‘Ò‚¿‰ðœ‚³‚ꂽƒ^ƒXƒN‚ª‹­§‘Ò‚¿ó‘ԂŁCØ‚芷‚í‚ç‚È‚¢
64 * (B-4) ‘Ò‚¿‰ðœ‚³‚ꂽƒ^ƒXƒN‚ª—Dæ“x‚ª’á‚­CØ‚芷‚í‚ç‚È‚¢
65 * (C) sig_sem‚É‚æ‚èƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª1‘‚¦‚é
66 * (C-1) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª0‚©‚ç1‚É‚È‚é
67 * (C-2) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª1‚©‚ç2‚É‚È‚é
68 * (D) sig_sem‚ªE_QOVRƒGƒ‰[‚Æ‚È‚é
69 * (D-1) ƒZƒ}ƒtƒH‚̍ő厑Œ¹”‚ª1‚ÌŽž
70 * (D-2) ƒZƒ}ƒtƒH‚̍ő厑Œ¹”‚ª2‚ÌŽž
71 * (E) wai_sem‚̐ÓIƒGƒ‰[‚̃eƒXƒg
72 * (E-1) ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚ç‚̌ďo‚µ
73 * (E-2) CPUƒƒbƒNó‘Ô‚©‚ç‚̌ďo‚µ
74 * (E-3) ƒfƒBƒXƒpƒbƒ`‹ÖŽ~ó‘Ô‚©‚ç‚̌ďo‚µ
75 * (E-4) Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ‚Å‚È‚¢ó‘Ô‚©‚ç‚̌ďo‚µ
76 * (E-5) semid‚ª•s³i¬‚³‚·‚¬‚éj
77 * (E-6) semid‚ª•s³i‘å‚«‚·‚¬‚éj
78 * (F) wai_sem‚É‚æ‚èƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª1Œ¸‚é
79 * (F-1) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª1‚©‚ç0‚É‚È‚é
80 * (F-2) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚ª2‚©‚ç1‚É‚È‚é
81 * (G) wai_sem‚É‚æ‚èƒZƒ}ƒtƒH‘Ò‚¿ó‘Ô‚É‚È‚é
82 * (G-1) TA_TNULL‘®«‚̃Zƒ}ƒtƒH‚ŁC‘Ò‚Á‚Ä‚¢‚éƒ^ƒXƒN‚ª‚È‚©‚Á‚½ê‡
83 * (G-2) TA_TNULL‘®«‚̃Zƒ}ƒtƒH‚ŁC‘Ò‚Á‚Ä‚¢‚éƒ^ƒXƒN‚ª‚ ‚Á‚½ê‡
84 * (G-3) TA_TPRI‘®«‚̃Zƒ}ƒtƒH‚ŁC‘Ò‚Á‚Ä‚¢‚éƒ^ƒXƒN‚ª‚È‚©‚Á‚½ê‡
85 * (G-4) TA_TPRI‘®«‚̃Zƒ}ƒtƒH‚ŁC—Dæ“x‚ª‚‚¢ƒ^ƒXƒN‚ª‘Ò‚Á‚Ä‚¢‚éê‡
86 * (G-5) TA_TPRI‘®«‚̃Zƒ}ƒtƒH‚ŁC—Dæ“x‚ª“¯‚¶ƒ^ƒXƒN‚ª‘Ò‚Á‚Ä‚¢‚éê‡
87 * (G-6) TA_TPRI‘®«‚̃Zƒ}ƒtƒH‚ŁC—Dæ“x‚ª’á‚¢ƒ^ƒXƒN‚ª‘Ò‚Á‚Ä‚¢‚éê‡
88 * (H) ƒZƒ}ƒtƒH‘Ò‚¿ó‘Ô‚ª‹­§‰ðœ‚³‚ê‚é
89 * (I) ƒZƒ}ƒtƒH‘Ò‚¿ó‘Ԃ̊ԂɃZƒ}ƒtƒH‚ª‰Šú‰»‚³‚ê‚é
90 * (J) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚̏‰Šú’l‚ª³‚µ‚­Ý’肳‚ê‚é
91 * (J-1) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚̏‰Šú’l‚ª0
92 * (J-2) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚̏‰Šú’l‚ª1
93 * (J-3) ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹”‚̏‰Šú’l‚ª2
94 *
95 * yŽg—pƒŠƒ\[ƒXz
96 *
97 * TASK1: ’†—Dæ“xƒ^ƒXƒNCTA_ACT‘®«
98 * TASK2: ‚—Dæ“xƒ^ƒXƒN
99 * TASK3: ’á—Dæ“xƒ^ƒXƒN
100 * TASK4: ’†—Dæ“xƒ^ƒXƒN
101 * TASK5: ’†—Dæ“xƒ^ƒXƒN
102 * ALM1: ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
103 * SEM1: TA_NULL‘®«C‰ŠúŽ‘Œ¹”1CÅ‘厑Œ¹”1
104 * SEM2: TA_NULL‘®«C‰ŠúŽ‘Œ¹”2CÅ‘厑Œ¹”2
105 * SEM3: TA_TPRI‘®«C‰ŠúŽ‘Œ¹”0CÅ‘厑Œ¹”1
106 *
107 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
108 *
109 * == TASK1i—Dæ“xF’†j==
110 * 1: ref_sem(SEM1, &rsem)
111 * assert(rsem.wtskid == TSK_NONE)
112 * assert(rsem.semcnt == 1) ... (J-2)
113 * ref_sem(SEM2, &rsem)
114 * assert(rsem.wtskid == TSK_NONE)
115 * assert(rsem.semcnt == 2) ... (J-3)
116 * ref_sem(SEM3, &rsem)
117 * assert(rsem.wtskid == TSK_NONE)
118 * assert(rsem.semcnt == 0) ... (J-1)
119 * 2: loc_cpu()
120 * sig_sem(SEM1) -> E_CTX ... (A-2)
121 * wai_sem(SEM1) -> E_CTX ... (E-2)
122 * unl_cpu()
123 * dis_dsp()
124 * wai_sem(SEM1) -> E_CTX ... (E-3)
125 * ena_dsp()
126 * chg_ipm(TMAX_INTPRI)
127 * wai_sem(SEM1) -> E_CTX ... (E-4)
128 * chg_ipm(TIPM_ENAALL)
129 * sig_sem(0) -> E_ID ... (A-3)
130 * wai_sem(0) -> E_ID ... (E-5)
131 * sig_sem(TNUM_SEMID+1) -> E_ID ... (A-4)
132 * wai_sem(TNUM_SEMID+1) -> E_ID ... (E-6)
133 * 3: act_tsk(TASK3)
134 * 4: slp_tsk()
135 * == TASK3i—Dæ“xF’áj==
136 * 5: wai_sem(SEM1) ... (F-1)
137 * 6: ref_sem(SEM1, &rsem)
138 * assert(rsem.wtskid == TSK_NONE)
139 * assert(rsem.semcnt == 0)
140 * 7: sta_alm(ALM1, 10)
141 * 8: wai_sem(SEM1) ... (G-1)
142 * == ALM1 ==
143 * 9: sig_sem(SEM1) -> E_CTX ... (A-1)
144 * wai_sem(SEM1) -> E_CTX ... (E-1)
145 * 10: iwup_tsk(TASK1)
146 * 11: RETURN
147 * == TASK1i‘±‚«j==
148 * 12: act_tsk(TASK2)
149 * == TASK2i—Dæ“xF‚j==
150 * 13: wai_sem(SEM1) ... (G-2)
151 * == TASK1i‘±‚«j==
152 * 14: ref_sem(SEM1, &rsem)
153 * assert(rsem.wtskid == TASK3)
154 * assert(rsem.semcnt == 0)
155 * 15: sig_sem(SEM1) ... (B-4)
156 * 16: sig_sem(SEM1) ... (B-1)
157 * == TASK2i‘±‚«j==
158 * 17: wai_sem(SEM1) ... (G-1)
159 * == TASK1i‘±‚«j==
160 * 18: dis_dsp()
161 * 19: sig_sem(SEM1) ... (B-2)
162 * 20: ena_dsp()
163 * == TASK2i‘±‚«j==
164 * 21: wai_sem(SEM1) ... (G-1)
165 * == TASK1i‘±‚«j==
166 * 22: sus_tsk(TASK2)
167 * 23: sig_sem(SEM1) ... (B-3)
168 * 24: sig_sem(SEM1) ... (C-1)
169 * 25: sig_sem(SEM1) -> E_QOVR ... (D-1)
170 * 26: ref_sem(SEM1, &rsem)
171 * assert(rsem.wtskid == TSK_NONE)
172 * assert(rsem.semcnt == 1)
173 * 27: rsm_tsk(TASK2)
174 * == TASK2i‘±‚«j==
175 * 28: wai_sem(SEM2) ... (F-2)
176 * 29: ref_sem(SEM2, &rsem)
177 * assert(rsem.wtskid == TSK_NONE)
178 * assert(rsem.semcnt == 1)
179 * 30: wai_sem(SEM2) ... (F-1)
180 * 31: wai_sem(SEM2) ... (G-1)
181 * == TASK1i‘±‚«j==
182 * 32: sig_sem(SEM2) ... (B-1)
183 * == TASK2i‘±‚«j==
184 * 33: wai_sem(SEM3) ... (G-3)
185 * == TASK1i‘±‚«j==
186 * 34: sig_sem(SEM2) ... (C-1)
187 * 35: sig_sem(SEM2) ... (C-2)
188 * 36: ref_sem(SEM2, &rsem)
189 * assert(rsem.wtskid == TSK_NONE)
190 * assert(rsem.semcnt == 2)
191 * 37: sig_sem(SEM2) -> E_QOVR ... (D-2)
192 * 38: ref_sem(SEM2, &rsem)
193 * assert(rsem.wtskid == TSK_NONE)
194 * assert(rsem.semcnt == 2)
195 * 39: MISSING
196 * 40: tslp_tsk(10) -> E_TMOUT
197 * == TASK3i‘±‚«j==
198 * 41: wai_sem(SEM3) ... (G-4)
199 * == TASK1i‘±‚«j==
200 * 42: act_tsk(TASK4)
201 * 43: act_tsk(TASK5)
202 * 44: rot_rdq(TPRI_SELF)
203 * == TASK4i—Dæ“xF’†j==
204 * 45: wai_sem(SEM3) ... (G-6)
205 * == TASK5i—Dæ“xF’†j==
206 * 46: wai_sem(SEM3) ... (G-5)
207 * == TASK1i‘±‚«j==
208 * 47: sig_sem(SEM3) ... (B-1)
209 * == TASK2i‘±‚«j==
210 * 48: wai_sem(SEM1)
211 * wai_sem(SEM1) -> E_RLWAI
212 * == TASK1i‘±‚«j==
213 * 49: sig_sem(SEM3) ... (B-4)
214 * 50: tslp_tsk(10) -> E_TMOUT
215 * == TASK4i‘±‚«j==
216 * 51: ext_tsk() -> noreturn
217 * == TASK1i‘±‚«j==
218 * 52: sig_sem(SEM3) ... (B-4)
219 * 53: tslp_tsk(10) -> E_TMOUT
220 * == TASK5i‘±‚«j==
221 * 54: ext_tsk() -> noreturn
222 * == TASK1i‘±‚«j==
223 * 55: sig_sem(SEM3) ... (B-4)
224 * 56: tslp_tsk(10) -> E_TMOUT
225 * == TASK3i‘±‚«j==
226 * 57: ext_tsk() -> noreturn
227 * == TASK1i‘±‚«j==
228 * 58: rel_wai(TASK2) ... (H)
229 * == TASK2i‘±‚«j==
230 * 59: wai_sem(SEM1) -> E_DLT
231 * == TASK1i‘±‚«j==
232 * 60: ini_sem(SEM1) ... (I)
233 * == TASK2i‘±‚«j==
234 * 61: ext_tsk() -> noreturn
235 * == TASK1i‘±‚«j==
236 * 62: END
237 */
238
239#include <kernel.h>
240#include <test_lib.h>
241#include <t_syslog.h>
242#include "kernel_cfg.h"
243#include "test_sem1.h"
244
245void
246alarm1_handler(intptr_t exinf)
247{
248 ER ercd;
249
250 check_point(9);
251 ercd = sig_sem(SEM1);
252 check_ercd(ercd, E_CTX);
253
254 ercd = wai_sem(SEM1);
255 check_ercd(ercd, E_CTX);
256
257 check_point(10);
258 ercd = iwup_tsk(TASK1);
259 check_ercd(ercd, E_OK);
260
261 check_point(11);
262 return;
263
264 check_point(0);
265}
266
267void
268task1(intptr_t exinf)
269{
270 ER ercd;
271 T_RSEM rsem;
272
273 check_point(1);
274 ercd = ref_sem(SEM1, &rsem);
275 check_ercd(ercd, E_OK);
276 check_assert(rsem.wtskid == TSK_NONE);
277 check_assert(rsem.semcnt == 1);
278
279 ercd = ref_sem(SEM2, &rsem);
280 check_ercd(ercd, E_OK);
281 check_assert(rsem.wtskid == TSK_NONE);
282 check_assert(rsem.semcnt == 2);
283
284 ercd = ref_sem(SEM3, &rsem);
285 check_ercd(ercd, E_OK);
286 check_assert(rsem.wtskid == TSK_NONE);
287 check_assert(rsem.semcnt == 0);
288
289 check_point(2);
290 ercd = loc_cpu();
291 check_ercd(ercd, E_OK);
292
293 ercd = sig_sem(SEM1);
294 check_ercd(ercd, E_CTX);
295
296 ercd = wai_sem(SEM1);
297 check_ercd(ercd, E_CTX);
298
299 ercd = unl_cpu();
300 check_ercd(ercd, E_OK);
301
302 ercd = dis_dsp();
303 check_ercd(ercd, E_OK);
304
305 ercd = wai_sem(SEM1);
306 check_ercd(ercd, E_CTX);
307
308 ercd = ena_dsp();
309 check_ercd(ercd, E_OK);
310
311 ercd = chg_ipm(TMAX_INTPRI);
312 check_ercd(ercd, E_OK);
313
314 ercd = wai_sem(SEM1);
315 check_ercd(ercd, E_CTX);
316
317 ercd = chg_ipm(TIPM_ENAALL);
318 check_ercd(ercd, E_OK);
319
320 ercd = sig_sem(0);
321 check_ercd(ercd, E_ID);
322
323 ercd = wai_sem(0);
324 check_ercd(ercd, E_ID);
325
326 ercd = sig_sem(TNUM_SEMID+1);
327 check_ercd(ercd, E_ID);
328
329 ercd = wai_sem(TNUM_SEMID+1);
330 check_ercd(ercd, E_ID);
331
332 check_point(3);
333 ercd = act_tsk(TASK3);
334 check_ercd(ercd, E_OK);
335
336 check_point(4);
337 ercd = slp_tsk();
338 check_ercd(ercd, E_OK);
339
340 check_point(12);
341 ercd = act_tsk(TASK2);
342 check_ercd(ercd, E_OK);
343
344 check_point(14);
345 ercd = ref_sem(SEM1, &rsem);
346 check_ercd(ercd, E_OK);
347 check_assert(rsem.wtskid == TASK3);
348 check_assert(rsem.semcnt == 0);
349
350 check_point(15);
351 ercd = sig_sem(SEM1);
352 check_ercd(ercd, E_OK);
353
354 check_point(16);
355 ercd = sig_sem(SEM1);
356 check_ercd(ercd, E_OK);
357
358 check_point(18);
359 ercd = dis_dsp();
360 check_ercd(ercd, E_OK);
361
362 check_point(19);
363 ercd = sig_sem(SEM1);
364 check_ercd(ercd, E_OK);
365
366 check_point(20);
367 ercd = ena_dsp();
368 check_ercd(ercd, E_OK);
369
370 check_point(22);
371 ercd = sus_tsk(TASK2);
372 check_ercd(ercd, E_OK);
373
374 check_point(23);
375 ercd = sig_sem(SEM1);
376 check_ercd(ercd, E_OK);
377
378 check_point(24);
379 ercd = sig_sem(SEM1);
380 check_ercd(ercd, E_OK);
381
382 check_point(25);
383 ercd = sig_sem(SEM1);
384 check_ercd(ercd, E_QOVR);
385
386 check_point(26);
387 ercd = ref_sem(SEM1, &rsem);
388 check_ercd(ercd, E_OK);
389 check_assert(rsem.wtskid == TSK_NONE);
390 check_assert(rsem.semcnt == 1);
391
392 check_point(27);
393 ercd = rsm_tsk(TASK2);
394 check_ercd(ercd, E_OK);
395
396 check_point(32);
397 ercd = sig_sem(SEM2);
398 check_ercd(ercd, E_OK);
399
400 check_point(34);
401 ercd = sig_sem(SEM2);
402 check_ercd(ercd, E_OK);
403
404 check_point(35);
405 ercd = sig_sem(SEM2);
406 check_ercd(ercd, E_OK);
407
408 check_point(36);
409 ercd = ref_sem(SEM2, &rsem);
410 check_ercd(ercd, E_OK);
411 check_assert(rsem.wtskid == TSK_NONE);
412 check_assert(rsem.semcnt == 2);
413
414 check_point(37);
415 ercd = sig_sem(SEM2);
416 check_ercd(ercd, E_QOVR);
417
418 check_point(38);
419 ercd = ref_sem(SEM2, &rsem);
420 check_ercd(ercd, E_OK);
421 check_assert(rsem.wtskid == TSK_NONE);
422 check_assert(rsem.semcnt == 2);
423
424 check_point(39);
425
426 check_point(40);
427 ercd = tslp_tsk(10);
428 check_ercd(ercd, E_TMOUT);
429
430 check_point(42);
431 ercd = act_tsk(TASK4);
432 check_ercd(ercd, E_OK);
433
434 check_point(43);
435 ercd = act_tsk(TASK5);
436 check_ercd(ercd, E_OK);
437
438 check_point(44);
439 ercd = rot_rdq(TPRI_SELF);
440 check_ercd(ercd, E_OK);
441
442 check_point(47);
443 ercd = sig_sem(SEM3);
444 check_ercd(ercd, E_OK);
445
446 check_point(49);
447 ercd = sig_sem(SEM3);
448 check_ercd(ercd, E_OK);
449
450 check_point(50);
451 ercd = tslp_tsk(10);
452 check_ercd(ercd, E_TMOUT);
453
454 check_point(52);
455 ercd = sig_sem(SEM3);
456 check_ercd(ercd, E_OK);
457
458 check_point(53);
459 ercd = tslp_tsk(10);
460 check_ercd(ercd, E_TMOUT);
461
462 check_point(55);
463 ercd = sig_sem(SEM3);
464 check_ercd(ercd, E_OK);
465
466 check_point(56);
467 ercd = tslp_tsk(10);
468 check_ercd(ercd, E_TMOUT);
469
470 check_point(58);
471 ercd = rel_wai(TASK2);
472 check_ercd(ercd, E_OK);
473
474 check_point(60);
475 ercd = ini_sem(SEM1);
476 check_ercd(ercd, E_OK);
477
478 check_finish(62);
479
480 check_point(0);
481}
482
483void
484task2(intptr_t exinf)
485{
486 ER ercd;
487 T_RSEM rsem;
488
489 check_point(13);
490 ercd = wai_sem(SEM1);
491 check_ercd(ercd, E_OK);
492
493 check_point(17);
494 ercd = wai_sem(SEM1);
495 check_ercd(ercd, E_OK);
496
497 check_point(21);
498 ercd = wai_sem(SEM1);
499 check_ercd(ercd, E_OK);
500
501 check_point(28);
502 ercd = wai_sem(SEM2);
503 check_ercd(ercd, E_OK);
504
505 check_point(29);
506 ercd = ref_sem(SEM2, &rsem);
507 check_ercd(ercd, E_OK);
508 check_assert(rsem.wtskid == TSK_NONE);
509 check_assert(rsem.semcnt == 1);
510
511 check_point(30);
512 ercd = wai_sem(SEM2);
513 check_ercd(ercd, E_OK);
514
515 check_point(31);
516 ercd = wai_sem(SEM2);
517 check_ercd(ercd, E_OK);
518
519 check_point(33);
520 ercd = wai_sem(SEM3);
521 check_ercd(ercd, E_OK);
522
523 check_point(48);
524 ercd = wai_sem(SEM1);
525 check_ercd(ercd, E_OK);
526
527 ercd = wai_sem(SEM1);
528 check_ercd(ercd, E_RLWAI);
529
530 check_point(59);
531 ercd = wai_sem(SEM1);
532 check_ercd(ercd, E_DLT);
533
534 check_point(61);
535 ercd = ext_tsk();
536
537 check_point(0);
538}
539
540void
541task3(intptr_t exinf)
542{
543 ER ercd;
544 T_RSEM rsem;
545
546 check_point(5);
547 ercd = wai_sem(SEM1);
548 check_ercd(ercd, E_OK);
549
550 check_point(6);
551 ercd = ref_sem(SEM1, &rsem);
552 check_ercd(ercd, E_OK);
553 check_assert(rsem.wtskid == TSK_NONE);
554 check_assert(rsem.semcnt == 0);
555
556 check_point(7);
557 ercd = sta_alm(ALM1, 10);
558 check_ercd(ercd, E_OK);
559
560 check_point(8);
561 ercd = wai_sem(SEM1);
562 check_ercd(ercd, E_OK);
563
564 check_point(41);
565 ercd = wai_sem(SEM3);
566 check_ercd(ercd, E_OK);
567
568 check_point(57);
569 ercd = ext_tsk();
570
571 check_point(0);
572}
573
574void
575task4(intptr_t exinf)
576{
577 ER ercd;
578
579 check_point(45);
580 ercd = wai_sem(SEM3);
581 check_ercd(ercd, E_OK);
582
583 check_point(51);
584 ercd = ext_tsk();
585
586 check_point(0);
587}
588
589void
590task5(intptr_t exinf)
591{
592 ER ercd;
593
594 check_point(46);
595 ercd = wai_sem(SEM3);
596 check_ercd(ercd, E_OK);
597
598 check_point(54);
599 ercd = ext_tsk();
600
601 check_point(0);
602}
Note: See TracBrowser for help on using the repository browser.