source: asp_ewarm/asp-1.7.0/extension/mutex/test/test_mutex5.c@ 61

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

ASP for EWARM のコミット.

File size: 25.0 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-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_mutex5.c 1696 2010-01-01 16:01:25Z ertl-hiro $
42 */
43
44/*
45 * ƒ~ƒ…
46[ƒeƒbƒNƒX‚̃eƒXƒg(5)
47 *
48 * yƒeƒXƒg‚Ì–Ú“Iz
49 *
50 * —Dæ“xãŒÀƒ~ƒ…
51[ƒeƒbƒNƒX‚ɑ΂µ‚āCƒ~ƒ…
52[ƒeƒbƒNƒX‚̍ú‰»ˆ—‚ð–Ô
53 * —…
54“I‚ɃeƒXƒg‚·‚éD‚½‚¾‚µCchange_priority‚Æmutex_calc_priority‚Ì“à
55 * —e‚É‚Í“¥‚ݍž‚Ü‚È‚¢D
56 *
57 * yƒeƒXƒg€–ځz
58 *
59 * (A) ƒ~ƒ…
60[ƒeƒbƒNƒX‚̏‰Šú‰»iini_mtxj‚É”º‚¤ƒ~ƒ…
61[ƒeƒbƒNƒX‚ðƒƒbƒN‚µ
62 * ‚Ä‚¢‚½ƒ^ƒXƒNiŽÀs‚Å‚«‚éó‘ԁj‚Ì—Dæ“x•ÏX
63 * (A-1) ‰Šú‰»‚µ‚½ƒ~ƒ…
64[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
65[ƒeƒbƒNƒX‚ð
66 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNiŽÀs‚Å‚«‚éó‘ԁj‚ÌŒ»Ý—Dæ“x‚Æ“¯‚¶
67 * ‚ŁCƒ~ƒ…
68[ƒeƒbƒNƒX‚̃ƒbƒN‰ðœ‚Å—Dæ“x‚ª‰º‚ª‚é‚ׂ«ê‡‚ɁC
69 * “–ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª“KØ‚ɉº‚°‚ç‚ê‚邱‚ƁD‚Ü‚½C“¯‚¶—Dæ
70 * “x“à‚Å‚Ì—Dæ‡ˆÊ‚ªÅ‚‚ɂȂ邱‚Æ
71 * (A-2) ‰Šú‰»‚µ‚½ƒ~ƒ…
72[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
73[ƒeƒbƒNƒX‚ð
74 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNiŽÀs‚Å‚«‚éó‘ԁj‚ÌŒ»Ý—Dæ“x‚Æ“¯‚¶
75 * ‚ŁCƒ~ƒ…
76[ƒeƒbƒNƒX‚̃ƒbƒN‰ðœ‚Å—Dæ“x‚ª•Ï‚í‚é‚ׂ«‚Å‚È‚¢
77 * ê‡‚ɁC“–ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª•Ï‚í‚ç‚È‚¢‚±‚ƁD‚Ü‚½C“¯‚¶—D
78 * æ“x“à‚Å‚Ì—Dæ‡ˆÊ‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ
79 * (A-3) ‰Šú‰»‚µ‚½ƒ~ƒ…
80[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
81[ƒeƒbƒNƒX‚ð
82 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNiŽÀs‚Å‚«‚éó‘ԁj‚ÌŒ»Ý—Dæ“x‚æ‚è‚à
83 * ’á‚¢ê‡‚ɁC“–ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª•Ï‚í‚ç‚È‚¢‚±‚ƁD‚Ü‚½C“¯
84 * ‚¶—Dæ“x“à‚Å‚Ì—Dæ‡ˆÊ‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ
85 * (A-4) (A-1)‚ÌŒ‹‰ÊCƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`‚ª‹N‚±‚邱‚ƁD
86 * (B) ƒ~ƒ…
87[ƒeƒbƒNƒX‚̏‰Šú‰»iini_mtxj‚É”º‚¤ƒ~ƒ…
88[ƒeƒbƒNƒX‚ðƒƒbƒN‚µ
89 * ‚Ä‚¢‚½ƒ^ƒXƒNi‘Ò‚¿ó‘ԁj‚Ì—Dæ“x•ÏX
90 * (B-1) ‰Šú‰»‚µ‚½ƒ~ƒ…
91[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
92[ƒeƒbƒNƒX‚ð
93 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNi‘Ò‚¿ó‘ԁj‚ÌŒ»Ý—Dæ“x‚Æ“¯‚¶‚ŁC
94 * ƒ~ƒ…
95[ƒeƒbƒNƒX‚̃ƒbƒN‰ðœ‚Å—Dæ“x‚ª‰º‚ª‚é‚ׂ«ê‡‚ɁC“–
96 * ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª“KØ‚ɉº‚°‚ç‚ê‚邱‚ƁD‚Ü‚½C“¯‚¶—Dæ“x
97 * “à‚ł̏‡˜‚ªÅŒã‚ɂȂ邱‚Æ
98 * (B-2) ‰Šú‰»‚µ‚½ƒ~ƒ…
99[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
100[ƒeƒbƒNƒX‚ð
101 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNi‘Ò‚¿ó‘ԁj‚ÌŒ»Ý—Dæ“x‚Æ“¯‚¶‚ŁC
102 * ƒ~ƒ…
103[ƒeƒbƒNƒX‚̃ƒbƒN‰ðœ‚Å—Dæ“x‚ª•Ï‚í‚é‚ׂ«‚Å‚È‚¢ê‡
104 * ‚ɁC“–ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª•Ï‚í‚ç‚È‚¢‚±‚ƁD‚Ü‚½C“¯‚¶—Dæ“x
105 * “à‚ł̏‡˜‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ
106 * (B-3) ‰Šú‰»‚µ‚½ƒ~ƒ…
107[ƒeƒbƒNƒX‚̏ãŒÀ—Dæ“x‚ªCƒ~ƒ…
108[ƒeƒbƒNƒX‚ð
109 * ƒƒbƒN‚µ‚Ä‚¢‚½ƒ^ƒXƒNi‘Ò‚¿ó‘ԁj‚ÌŒ»Ý—Dæ“x‚æ‚è‚à’á‚¢ê
110 * ‡‚ɁC“–ŠYƒ^ƒXƒN‚Ì—Dæ“x‚ª•Ï‚í‚ç‚È‚¢‚±‚ƁD‚Ü‚½C“¯‚¶—Dæ
111 * “x“à‚ł̏‡˜‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ
112 * (C) ƒ~ƒ…
113[ƒeƒbƒNƒX‚̏‰Šú‰»iini_mtxj‚É”º‚¤ƒ~ƒ…
114[ƒeƒbƒNƒX‚ð‘Ò‚Á‚Ä‚¢
115 * ‚½ƒ^ƒXƒN‚̏ó‘ԕω»
116 * (C-1) ƒ~ƒ…
117[ƒeƒbƒNƒX‚ð‘Ò‚Á‚Ä‚¢‚½ƒ^ƒXƒN‚ª‘Ò‚¿‰ðœ‚³‚ê‚邱‚ƁD
118 * (C-2) (C-1)‚ÌŒ‹‰ÊCƒ^ƒXƒNƒfƒBƒXƒpƒbƒ`‚ª‹N‚±‚邱‚ƁD
119 *
120 * yƒeƒXƒg€–Ú‚ÌŽÀŒ»•û–@z
121 *
122 * (A-1)
123 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
124[ƒeƒbƒNƒXiMTX1j‚ð
125 * ƒƒbƒN‚µ‚½ó‘ԂŁC‚—Dæ“xƒ^ƒXƒNiTASK5j‚©‚çMTX1‚ðÄ‰Šú‰»‚µC
126 * TASK1‚Ì—Dæ“x‚ª’á—Dæ“x‚ɉº‚ª‚邱‚Æ‚ðŠm”F‚·‚éD‚Ü‚½CŽÀs‰Â”\ó
127 * ‘Ô‚Ì’á—Dæ“xƒ^ƒXƒNiTASK2j‚æ‚è‚àC—Dæ‡ˆÊ‚ª‚‚­‚Ȃ邱‚Æ‚ðŠm”F
128 * ‚·‚éD@
129 * (A-2)
130 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
131[ƒeƒbƒNƒX‚ð2‚Â
132 * iMTX1CMTX2j‚ðƒƒbƒN‚µ‚½ó‘ԂŁC‚—Dæ“xƒ^ƒXƒNiTASK5j‚©‚ç
133 * MTX1‚ðÄ‰Šú‰»‚µCTASK1‚Ì—Dæ“x‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD‚Ü‚½C
134 * ŽÀs‰Â”\ó‘Ô‚Ì’†—Dæ“xƒ^ƒXƒN‚ð2‚iTASK3CTASK4j‚ð—pˆÓ‚µ‚Ä‚¨‚«C
135 * —Dæ‡ˆÊ‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD
136 * (A-3)
137 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
138[ƒeƒbƒNƒXiMTX2j‚Æ
139 * ’á—Dæ“xãŒÀƒ~ƒ…
140[ƒeƒbƒNƒXiMTX3j‚ðƒƒbƒN‚µ‚½ó‘ԂŁC‚—Dæ“x
141 * ƒ^ƒXƒNiTASK5j‚©‚çMTX3‚ðÄ‰Šú‰»‚µCTASK1‚Ì—Dæ“x‚ª•Ï‰»‚µ‚È‚¢
142 * ‚±‚Æ‚ðŠm”F‚·‚éD‚Ü‚½CŽÀs‰Â”\ó‘Ô‚Ì’†—Dæ“xƒ^ƒXƒN‚ð2‚iTASK3C
143 * TASK4j‚ð—pˆÓ‚µ‚Ä‚¨‚«C—Dæ‡ˆÊ‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD
144 * (A-4)
145 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
146[ƒeƒbƒNƒXiMTX2j‚ð
147 * ƒƒbƒN‚µ‚½ó‘ԂŁCTASK1‚©‚çMTX2‚ðÄ‰Šú‰»‚µCTASK1‚Ì—Dæ“x‚ª’á
148 * —Dæ“x‚ɉº‚ª‚èCŽÀs‰Â”\ó‘Ô‚Ì’†—Dæ“xƒ^ƒXƒNiTASK4j‚ɐ؂芷‚í
149 * ‚邱‚Æ‚ðŠm”F‚·‚éD‚Ü‚½CŽÀs‰Â”\ó‘Ô‚Ì’á—Dæ“xƒ^ƒXƒNiTASK2j‚æ
150 * ‚è‚àC—Dæ‡ˆÊ‚ª‚‚­‚Ȃ邱‚Æ‚ðŠm”F‚·‚éD@
151 * (B-1)
152 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
153[ƒeƒbƒNƒXiMTX1j‚ð
154 * ƒƒbƒN‚µ‚½ó‘ԂŁC•Ê‚̃~ƒ…
155[ƒeƒbƒNƒXiMTX4j‘Ò‚¿ó‘Ô‚Æ‚µC‚—D
156 * æ“xƒ^ƒXƒNiTASK5j‚©‚çMTX1‚ðÄ‰Šú‰»‚µCTASK1‚Ì—Dæ“x‚ª’á—Dæ
157 * “x‚ɉº‚ª‚邱‚Æ‚ðŠm”F‚·‚éD‚Ü‚½CMTX4‘Ò‚¿ó‘Ô‚Ì’á—Dæ“xƒ^ƒXƒN
158 * iTASK2j‚æ‚è‚àC‘Ò‚¿s—ñ’†‚ł̏‡˜‚ªŒã‚ɂȂ邱‚Æ‚ðŠm”F‚·‚éD
159 * (B-2)
160 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
161[ƒeƒbƒNƒX‚ð2‚Â
162 * iMTX1CMTX2j‚ðƒƒbƒN‚µ‚½ó‘ԂŁC•Ê‚̃~ƒ…
163[ƒeƒbƒNƒXiMTX4j‘Ò
164 * ‚¿ó‘Ô‚Æ‚µC‚—Dæ“xƒ^ƒXƒNiTASK5j‚©‚çMTX1‚ðÄ‰Šú‰»‚µCTASK1
165 * ‚Ì—Dæ“x‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD‚Ü‚½CMTX4‘Ò‚¿ó‘Ô‚Ì’†—Dæ
166 * “xƒ^ƒXƒN‚ð2‚iTASK3CTASK4j‚ð—pˆÓ‚µ‚Ä‚¨‚«C‘Ò‚¿s—ñ’†‚ł̏‡˜
167 * ‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD
168 * (B-3)
169 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ªC’†—Dæ“xãŒÀƒ~ƒ…
170[ƒeƒbƒNƒXiMTX2j‚Æ
171 * ’á—Dæ“xãŒÀƒ~ƒ…
172[ƒeƒbƒNƒXiMTX3j‚ðƒƒbƒN‚µ‚½ó‘ԂŁC•Ê‚̃~ƒ…
173[
174 * ƒeƒbƒNƒXiMTX4j‘Ò‚¿ó‘Ô‚Æ‚µC‚—Dæ“xƒ^ƒXƒNiTASK5j‚©‚çMTX3‚ð
175 * Ä‰Šú‰»‚µCTASK1‚Ì—Dæ“x‚ª•Ï‰»‚µ‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD‚Ü‚½C
176 * MTX4‘Ò‚¿ó‘Ô‚Ì’†—Dæ“xƒ^ƒXƒN‚ð2‚iTASK3CTASK4j‚ð—pˆÓ‚µ‚Ä‚¨‚«C
177 * ‘Ò‚¿s—ñ’†‚ł̏‡˜‚ª•Ï‚í‚ç‚È‚¢‚±‚Æ‚ðŠm”F‚·‚éD
178 * (C-1)
179 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ª’†—Dæ“xãŒÀƒ~ƒ…
180[ƒeƒbƒNƒXiMTX1j‚ðƒƒb
181 * ƒN‚µC’†—Dæ“xƒ^ƒXƒNiTASK3j‚ªMTX1‚ð‘Ò‚Á‚Ä‚¢‚éó‘ԂŁC‚—Dæ“x
182 * ƒ^ƒXƒNiTASK5j‚©‚çMTX1‚ðÄ‰Šú‰»‚µCTASK3‚ª‘Ò‚¿‰ðœ‚³‚ê‚邱‚Æ
183 * ‚ðŠm”F‚·‚éD‚Ü‚½CŽÀs‰Â”\ó‘Ô‚Ì’†—Dæ“xƒ^ƒXƒNiTASK4j‚æ‚è‚àC
184 * TASK3‚Ì•û‚ª—Dæ‡ˆÊ‚ª’á‚­‚Ȃ邱‚Æ‚ðŠm”F‚·‚éD@
185 * (C-2)
186 * ’á—Dæ“xƒ^ƒXƒNiTASK1j‚ª’†—Dæ“xãŒÀƒ~ƒ…
187[ƒeƒbƒNƒXiMTX1j‚ðƒƒb
188 * ƒN‚µC’†—Dæ“xƒ^ƒXƒNiTASK3j‚ªMTX1‚ð‘Ò‚¿CTASK1‚ð‹N°‘Ò‚¿ó‘Ô
189 * ‚Æ‚µ‚½ó‘ԂŁC•Ê‚Ì’á—Dæ“xƒ^ƒXƒNiTASK2j‚©‚çMTX1‚ðÄ‰Šú‰»‚µC
190 * TASK3‚ª‘Ò‚¿‰ðœ‚³‚êCTASK3‚ɐ؂芷‚í‚邱‚Æ‚ðŠm”F‚·‚éD
191 *
192 * yŽg—pƒŠƒ\[ƒXz
193 *
194 * TASK1: ’á—Dæ“xƒ^ƒXƒNCƒƒCƒ“ƒ^ƒXƒNCÅ‰‚©‚ç‹N“®
195 * TASK2: ’á—Dæ“xƒ^ƒXƒN
196 * TASK3: ’†—Dæ“xƒ^ƒXƒN
197 * TASK4: ’†—Dæ“xƒ^ƒXƒN
198 * TASK5: ‚—Dæ“xƒ^ƒXƒN
199 * MTX1: ƒ~ƒ…
200[ƒeƒbƒNƒXiTA_CEILING‘®«CãŒÀ‚Í’†—Dæ“xj
201 * MTX2: ƒ~ƒ…
202[ƒeƒbƒNƒXiTA_CEILING‘®«CãŒÀ‚Í’†—Dæ“xj
203 * MTX3: ƒ~ƒ…
204[ƒeƒbƒNƒXiTA_CEILING‘®«CãŒÀ‚Í’á—Dæ“xj
205 * MTX4: ƒ~ƒ…
206[ƒeƒbƒNƒXiTA_CEILING‘®«CãŒÀ‚͍‚—Dæ“xj
207 *
208 * yƒeƒXƒgƒV[ƒPƒ“ƒXz
209 *
210 * == TASK1i—Dæ“xF’áj==
211 * call(set_bit_func(bit_mutex))
212 * 1: loc_mtx(MTX1)
213 * 2: act_tsk(TASK2)
214 * 3: act_tsk(TASK5)
215 * // ‚FTASK5C’†FTASK1C’áFTASK2CMTX1FTASK1
216 * == TASK5i—Dæ“xF‚j==
217 * 4: ini_mtx(MTX1) ... (A-1)
218 * // ‚FTASK5C’áFTASK1¨TASK2
219 * get_pri(TASK1, &tskpri)
220 * assert(tskpri == LOW_PRIORITY)
221 * 5: slp_tsk()
222 * // ’áFTASK1¨TASK2
223 *
224 * == TASK1i‘±‚«j==
225 * 6: sus_tsk(TASK2)
226 * 7: loc_mtx(MTX1)
227 * loc_mtx(MTX2)
228 * 8: act_tsk(TASK3)
229 * // ’†FTASK1¨TASK3CMTX1FTASK1CMTX2FTASK1
230 * 9: dis_dsp()
231 * 10: rot_rdq(MID_PRIORITY)
232 * // ’†FTASK3¨TASK1CMTX1FTASK1CMTX2FTASK1
233 * 11: act_tsk(TASK4)
234 * // ’†FTASK3¨TASK1¨TASK4CMTX1FTASK1CMTX2FTASK1
235 * 12: wup_tsk(TASK5)
236 * // ‚FTASK5C’†FTASK3¨TASK1¨TASK4CMTX1FTASK1CMTX2FTASK1
237 * 13: ena_dsp()
238 * == TASK5i‘±‚«j==
239 * 14: ini_mtx(MTX1) ... (A-2)
240 * // ‚FTASK5C’†FTASK3¨TASK1¨TASK4CMTX2FTASK1
241 * get_pri(TASK1, &tskpri)
242 * assert(tskpri == MID_PRIORITY)
243 * 15: slp_tsk()
244 * // ’†FTASK3¨TASK1¨TASK4CMTX2FTASK1
245 * == TASK3i—Dæ“xF’†j==
246 * 16: slp_tsk()
247 * // ’†FTASK1¨TASK4CMTX2FTASK1
248 * == TASK1i‘±‚«j==
249 * 17: slp_tsk()
250 * // ’†FTASK4CMTX2FTASK1
251 * == TASK4i—Dæ“xF’†j==
252 * 18: wup_tsk(TASK1)
253 * // ’†FTASK4¨TASK1CMTX2FTASK1
254 * 19: slp_tsk()
255 * // ’†FTASK1CMTX2FTASK1
256 *
257 * == TASK1i‘±‚«j==
258 * 20: loc_mtx(MTX3)
259 * // ’†FTASK1CMTX2FTASK1CMTX3FTASK1
260 * 21: wup_tsk(TASK3)
261 * // ’†FTASK1¨TASK3CMTX2FTASK1CMTX3FTASK1
262 * 22: dis_dsp()
263 * 23: rot_rdq(MID_PRIORITY)
264 * // ’†FTASK3¨TASK1CMTX2FTASK1CMTX3FTASK1
265 * 24: wup_tsk(TASK4)
266 * // ’†FTASK3¨TASK1¨TASK4CMTX2FTASK1CMTX3FTASK1
267 * 25: wup_tsk(TASK5)
268 * // ‚FTASK5C’†FTASK3¨TASK1¨TASK4CMTX2FTASK1CMTX3FTASK1
269 * 26: ena_dsp()
270 * == TASK5i‘±‚«j==
271 * 27: ini_mtx(MTX3) ... (A-3)
272 * // ‚FTASK5C’†FTASK3¨TASK1¨TASK4CMTX2FTASK1
273 * get_pri(TASK1, &tskpri)
274 * assert(tskpri == MID_PRIORITY)
275 * 28: slp_tsk()
276 * // ’†FTASK3¨TASK1¨TASK4CMTX2FTASK1
277 * == TASK3i‘±‚«j==
278 * 29: slp_tsk()
279 * // ’†FTASK1¨TASK4CMTX2FTASK1
280 *
281 * == TASK1i‘±‚«j==
282 * 30: slp_tsk()
283 * // ’†FTASK4CMTX2FTASK1
284 * == TASK4i‘±‚«j==
285 * 31: wup_tsk(TASK1)
286 * // ’†FTASK4¨TASK1CMTX2FTASK1
287 * 32: rot_rdq(MID_PRIORITY)
288 * // ’†FTASK1¨TASK4CMTX2FTASK1
289 * == TASK1i‘±‚«j==
290 * 33: rsm_tsk(TASK2)
291 * // ’†FTASK1¨TASK4C’áFTASK2CMTX2FTASK1
292 * 34: ini_mtx(MTX2) ... (A-4)
293 * // ’†FTASK4C’áFTASK1¨TASK2
294 * == TASK4i‘±‚«j==
295 * 35: get_pri(TASK1, &tskpri)
296 * assert(tskpri == LOW_PRIORITY)
297 * 36: slp_tsk()
298 * // ’áFTASK1¨TASK2
299 *
300 * == TASK1i‘±‚«j==
301 * 37: wup_tsk(TASK5)
302 * == TASK5i‘±‚«j==
303 * 38: loc_mtx(MTX4)
304 * 39: tslp_tsk(10) -> E_TMOUT
305 * // ’áFTASK1¨TASK2CMTX4FTASK5
306 * == TASK1i‘±‚«j==
307 * 40: loc_mtx(MTX1)
308 * // ’†FTASK1C’áFTASK2CMTX1FTASK1CMTX4FTASK5
309 * 41: loc_mtx(MTX4)
310 * // ’áFTASK2CMTX1FTASK1CMTX4FTASK5¨TASK1
311 * == TASK2i—Dæ“xF’áj==
312 * 42: loc_mtx(MTX4)
313 * // MTX1FTASK1CMTX4FTASK5¨TASK1¨TASK2
314 * // ƒ^ƒCƒ€ƒAƒEƒg‘Ò‚¿
315 * // ‚FTASK5CMTX1FTASK1CMTX4FTASK5¨TASK1¨TASK2
316 * == TASK5i‘±‚«j==
317 * 43: ini_mtx(MTX1) ... (B-1)
318 * // ‚FTASK5CMTX4FTASK5¨TASK2¨TASK1
319 * get_pri(TASK1, &tskpri)
320 * assert(tskpri == LOW_PRIORITY)
321 * 44: unl_mtx(MTX4)
322 * // ‚FTASK5¨TASK2CMTX4FTASK2¨TASK1
323 * 45: slp_tsk()
324 * // ‚FTASK2CMTX4FTASK2¨TASK1
325 * == TASK2i‘±‚«j==
326 * 46: unl_mtx(MTX4)
327 * // ‚FTASK1C’áFTASK2CMTX4FTASK1
328 * == TASK1i‘±‚«j==
329 * 47: unl_mtx(MTX4)
330 * // ’áFTASK1¨TASK2
331 *
332 * 48: wup_tsk(TASK5)
333 * == TASK5i‘±‚«j==
334 * 49: loc_mtx(MTX4)
335 * 50: slp_tsk()
336 * // ’áFTASK1¨TASK2CMTX4FTASK5
337 * == TASK1i‘±‚«j==
338 * 51: wup_tsk(TASK3)
339 * // ’†FTASK3C’áFTASK1¨TASK2CMTX4FTASK5
340 * == TASK3i‘±‚«j==
341 * 52: loc_mtx(MTX4)
342 * // ’áFTASK1¨TASK2CMTX4FTASK5¨TASK3
343 * == TASK1i‘±‚«j==
344 * 53: loc_mtx(MTX1)
345 * loc_mtx(MTX2)
346 * // ’†FTASK1C’áFTASK2CMTX1FTASK1CMTX2FTASK1CMTX4FTASK5¨TASK3
347 * 54: loc_mtx(MTX4)
348 * // ’áFTASK2CMTX1FTASK1CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1
349 * == TASK2i‘±‚«j==
350 * 55: wup_tsk(TASK4)
351 * == TASK4i‘±‚«j==
352 * 56: loc_mtx(MTX4)
353 * // ’áFTASK2CMTX1FTASK1CMTX2FTASK1C
354 * // MTX4FTASK5¨TASK3¨TASK1¨TASK4
355 * == TASK2i‘±‚«j==
356 * 57: wup_tsk(TASK5)
357 * // ‚FTASK5C’áFTASK2CMTX1FTASK1CMTX2FTASK1C
358 * // MTX4FTASK5¨TASK3¨TASK1¨TASK4
359 * == TASK5i‘±‚«j==
360 * 58: ini_mtx(MTX1) ... (B-2)
361 * // ‚FTASK5C’áFTASK2CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1¨TASK4
362 * get_pri(TASK1, &tskpri)
363 * assert(tskpri == MID_PRIORITY)
364 * 59: unl_mtx(MTX4)
365 * // ‚FTASK5¨TASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
366 * 60: slp_tsk()
367 * // ‚FTASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
368 * == TASK3i‘±‚«j==
369 * 61: unl_mtx(MTX4)
370 * // ‚FTASK1C’†FTASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK1¨TASK4
371 * == TASK1i‘±‚«j==
372 * 62: unl_mtx(MTX4)
373 * // ‚FTASK4C’†FTASK1¨TASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK4
374 * == TASK4i‘±‚«j==
375 * 63: unl_mtx(MTX4)
376 * // ’†FTASK4¨TASK1¨TASK3C’áFTASK2CMTX2FTASK1
377 * 64: slp_tsk()
378 * // ’†FTASK1¨TASK3C’áFTASK2CMTX2FTASK1
379 * == TASK1i‘±‚«j==
380 * 65: slp_tsk()
381 * // ’†FTASK3C’áFTASK2CMTX2FTASK1
382 * == TASK3i‘±‚«j==
383 * 66: slp_tsk()
384 * // ’áFTASK2CMTX2FTASK1
385 *
386 * == TASK2i‘±‚«j==
387 * 67: wup_tsk(TASK5)
388 * == TASK5i‘±‚«j==
389 * 68: loc_mtx(MTX4)
390 * 69: slp_tsk()
391 * // ’áFTASK2CMTX4FTASK5
392 * == TASK2i‘±‚«j==
393 * 70: wup_tsk(TASK3)
394 * == TASK3i‘±‚«j==
395 * 71: loc_mtx(MTX4)
396 * // ’áFTASK2CMTX4FTASK5¨TASK3
397 * == TASK2i‘±‚«j==
398 * 72: wup_tsk(TASK1)
399 * // ’†FTASK1C’áFTASK2CMTX4FTASK5
400 * == TASK1i‘±‚«j==
401 * 73: loc_mtx(MTX3)
402 * // ’†FTASK1C’áFTASK2CMTX2FTASK1CMTX3FTASK1CMTX4FTASK5¨TASK3
403 * 74: loc_mtx(MTX4)
404 * // ’áFTASK2CMTX2FTASK1CMTX3FTASK1CMTX4FTASK5¨TASK3¨TASK1
405 * == TASK2i‘±‚«j==
406 * 75: wup_tsk(TASK4)
407 * == TASK4i‘±‚«j==
408 * 76: loc_mtx(MTX4)
409 * // ’áFTASK2CMTX2FTASK1CMTX3FTASK1C
410 * // MTX4FTASK5¨TASK3¨TASK1¨TASK4
411 * == TASK2i‘±‚«j==
412 * 77: wup_tsk(TASK5)
413 * // ‚FTASK5C’áFTASK2CMTX2FTASK1CMTX3FTASK1C
414 * // MTX4FTASK5¨TASK3¨TASK1¨TASK4
415 * == TASK5i‘±‚«j==
416 * 78: ini_mtx(MTX3) ... (B-3)
417 * // ‚FTASK5C’áFTASK2CMTX2FTASK1CMTX4FTASK5¨TASK3¨TASK1¨TASK4
418 * get_pri(TASK1, &tskpri)
419 * assert(tskpri == MID_PRIORITY)
420 * 79: unl_mtx(MTX4)
421 * // ‚FTASK5¨TASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
422 * 80: slp_tsk()
423 * // ‚FTASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK3¨TASK1¨TASK4
424 * == TASK3i‘±‚«j==
425 * 81: unl_mtx(MTX4)
426 * // ‚FTASK1C’†FTASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK1¨TASK4
427 * == TASK1i‘±‚«j==
428 * 82: unl_mtx(MTX4)
429 * // ‚FTASK4C’†FTASK1¨TASK3C’áFTASK2CMTX2FTASK1CMTX4FTASK4
430 * == TASK4i‘±‚«j==
431 * 83: unl_mtx(MTX4)
432 * // ’†FTASK4¨TASK1¨TASK3C’áFTASK2CMTX2FTASK1
433 * 84: slp_tsk()
434 * // ’†FTASK1¨TASK3C’áFTASK2CMTX2FTASK1
435 * == TASK1i‘±‚«j==
436 * 85: unl_mtx(MTX2)
437 * // ’†FTASK3C’áFTASK1¨TASK2
438 * == TASK3i‘±‚«j==
439 * 86: slp_tsk()
440 * // ’áFTASK1¨TASK2
441 *
442 * == TASK1i‘±‚«j==
443 * 87: sus_tsk(TASK2)
444 * // ’áFTASK1
445 * 88: loc_mtx(MTX1)
446 * // ’†FTASK1CMTX1FTASK1
447 * 89: wup_tsk(TASK3)
448 * // ’†FTASK1¨TASK3CMTX1FTASK1
449 * 90: rot_rdq(MID_PRIORITY)
450 * // ’†FTASK3¨TASK1CMTX1FTASK1
451 * == TASK3i‘±‚«j==
452 * 91: loc_mtx(MTX1) -> E_DLT
453 * // ’†FTASK1CMTX1FTASK1¨TASK3
454 * == TASK1i‘±‚«j==
455 * 92: wup_tsk(TASK5)
456 * // ‚FTASK5C’†FTASK1CMTX1FTASK1¨TASK3
457 * == TASK5i‘±‚«j==
458 * 93: wup_tsk(TASK4)
459 * // ‚FTASK5C’†FTASK1¨TASK4CMTX1FTASK1¨TASK3
460 * 94: ini_mtx(MTX1) ... (C-1)
461 * // ‚FTASK5C’†FTASK4¨TASK3C’áFTASK1
462 * 95: ext_tsk() -> noreturn
463 * // ’†FTASK4¨TASK3C’áFTASK1
464 * == TASK4i‘±‚«j==
465 * 96: ext_tsk() -> noreturn
466 * // ’†FTASK3C’áFTASK1
467 * == TASK3i‘±‚«j==
468 * 97: slp_tsk()
469 * // ’áFTASK1
470 *
471 * == TASK1i‘±‚«j==
472 * 98: loc_mtx(MTX1)
473 * // ’†FTASK1CMTX1FTASK1
474 * 99: wup_tsk(TASK3)
475 * // ’†FTASK1¨TASK3CMTX1FTASK1
476 * 100: rot_rdq(MID_PRIORITY)
477 * // ’†FTASK3¨TASK1CMTX1FTASK1
478 * == TASK3i‘±‚«j==
479 * 101: loc_mtx(MTX1) -> E_DLT
480 * // ’†FTASK1CMTX1FTASK1¨TASK3
481 * == TASK1i‘±‚«j==
482 * 102: rsm_tsk(TASK2)
483 * // ’†FTASK1C’áFTASK2CMTX1FTASK1¨TASK3
484 * 103: slp_tsk()
485 * // ’áFTASK2CMTX1FTASK1¨TASK3
486 * == TASK2i‘±‚«j==
487 * 104: ini_mtx(MTX1) ... (C-2)
488 * // ’†FTASK3C’áFTASK2
489 * == TASK3i‘±‚«j==
490 * 105: ext_tsk() -> noreturn
491 * // ’áFTASK2
492 * == TASK2i‘±‚«j==
493 * 106: ter_tsk(TASK1)
494 * 107: END
495 */
496
497#include <kernel.h>
498#include <t_syslog.h>
499#include "syssvc/logtask.h"
500#include "kernel_cfg.h"
501#include "test_lib.h"
502#include "test_mutex5.h"
503
504extern ER bit_mutex(void);
505
506void
507task1(intptr_t exinf)
508{
509 ER ercd;
510
511 set_bit_func(bit_mutex);
512
513 check_point(1);
514 ercd = loc_mtx(MTX1);
515 check_ercd(ercd, E_OK);
516
517 check_point(2);
518 ercd = act_tsk(TASK2);
519 check_ercd(ercd, E_OK);
520
521 check_point(3);
522 ercd = act_tsk(TASK5);
523 check_ercd(ercd, E_OK);
524
525 check_point(6);
526 ercd = sus_tsk(TASK2);
527 check_ercd(ercd, E_OK);
528
529 check_point(7);
530 ercd = loc_mtx(MTX1);
531 check_ercd(ercd, E_OK);
532
533 ercd = loc_mtx(MTX2);
534 check_ercd(ercd, E_OK);
535
536 check_point(8);
537 ercd = act_tsk(TASK3);
538 check_ercd(ercd, E_OK);
539
540 check_point(9);
541 ercd = dis_dsp();
542 check_ercd(ercd, E_OK);
543
544 check_point(10);
545 ercd = rot_rdq(MID_PRIORITY);
546 check_ercd(ercd, E_OK);
547
548 check_point(11);
549 ercd = act_tsk(TASK4);
550 check_ercd(ercd, E_OK);
551
552 check_point(12);
553 ercd = wup_tsk(TASK5);
554 check_ercd(ercd, E_OK);
555
556 check_point(13);
557 ercd = ena_dsp();
558 check_ercd(ercd, E_OK);
559
560 check_point(17);
561 ercd = slp_tsk();
562 check_ercd(ercd, E_OK);
563
564 check_point(20);
565 ercd = loc_mtx(MTX3);
566 check_ercd(ercd, E_OK);
567
568 check_point(21);
569 ercd = wup_tsk(TASK3);
570 check_ercd(ercd, E_OK);
571
572 check_point(22);
573 ercd = dis_dsp();
574 check_ercd(ercd, E_OK);
575
576 check_point(23);
577 ercd = rot_rdq(MID_PRIORITY);
578 check_ercd(ercd, E_OK);
579
580 check_point(24);
581 ercd = wup_tsk(TASK4);
582 check_ercd(ercd, E_OK);
583
584 check_point(25);
585 ercd = wup_tsk(TASK5);
586 check_ercd(ercd, E_OK);
587
588 check_point(26);
589 ercd = ena_dsp();
590 check_ercd(ercd, E_OK);
591
592 check_point(30);
593 ercd = slp_tsk();
594 check_ercd(ercd, E_OK);
595
596 check_point(33);
597 ercd = rsm_tsk(TASK2);
598 check_ercd(ercd, E_OK);
599
600 check_point(34);
601 ercd = ini_mtx(MTX2);
602 check_ercd(ercd, E_OK);
603
604 check_point(37);
605 ercd = wup_tsk(TASK5);
606 check_ercd(ercd, E_OK);
607
608 check_point(40);
609 ercd = loc_mtx(MTX1);
610 check_ercd(ercd, E_OK);
611
612 check_point(41);
613 ercd = loc_mtx(MTX4);
614 check_ercd(ercd, E_OK);
615
616 check_point(47);
617 ercd = unl_mtx(MTX4);
618 check_ercd(ercd, E_OK);
619
620 check_point(48);
621 ercd = wup_tsk(TASK5);
622 check_ercd(ercd, E_OK);
623
624 check_point(51);
625 ercd = wup_tsk(TASK3);
626 check_ercd(ercd, E_OK);
627
628 check_point(53);
629 ercd = loc_mtx(MTX1);
630 check_ercd(ercd, E_OK);
631
632 ercd = loc_mtx(MTX2);
633 check_ercd(ercd, E_OK);
634
635 check_point(54);
636 ercd = loc_mtx(MTX4);
637 check_ercd(ercd, E_OK);
638
639 check_point(62);
640 ercd = unl_mtx(MTX4);
641 check_ercd(ercd, E_OK);
642
643 check_point(65);
644 ercd = slp_tsk();
645 check_ercd(ercd, E_OK);
646
647 check_point(73);
648 ercd = loc_mtx(MTX3);
649 check_ercd(ercd, E_OK);
650
651 check_point(74);
652 ercd = loc_mtx(MTX4);
653 check_ercd(ercd, E_OK);
654
655 check_point(82);
656 ercd = unl_mtx(MTX4);
657 check_ercd(ercd, E_OK);
658
659 check_point(85);
660 ercd = unl_mtx(MTX2);
661 check_ercd(ercd, E_OK);
662
663 check_point(87);
664 ercd = sus_tsk(TASK2);
665 check_ercd(ercd, E_OK);
666
667 check_point(88);
668 ercd = loc_mtx(MTX1);
669 check_ercd(ercd, E_OK);
670
671 check_point(89);
672 ercd = wup_tsk(TASK3);
673 check_ercd(ercd, E_OK);
674
675 check_point(90);
676 ercd = rot_rdq(MID_PRIORITY);
677 check_ercd(ercd, E_OK);
678
679 check_point(92);
680 ercd = wup_tsk(TASK5);
681 check_ercd(ercd, E_OK);
682
683 check_point(98);
684 ercd = loc_mtx(MTX1);
685 check_ercd(ercd, E_OK);
686
687 check_point(99);
688 ercd = wup_tsk(TASK3);
689 check_ercd(ercd, E_OK);
690
691 check_point(100);
692 ercd = rot_rdq(MID_PRIORITY);
693 check_ercd(ercd, E_OK);
694
695 check_point(102);
696 ercd = rsm_tsk(TASK2);
697 check_ercd(ercd, E_OK);
698
699 check_point(103);
700 ercd = slp_tsk();
701 check_ercd(ercd, E_OK);
702
703 check_point(0);
704}
705
706void
707task2(intptr_t exinf)
708{
709 ER ercd;
710
711 check_point(42);
712 ercd = loc_mtx(MTX4);
713 check_ercd(ercd, E_OK);
714
715 check_point(46);
716 ercd = unl_mtx(MTX4);
717 check_ercd(ercd, E_OK);
718
719 check_point(55);
720 ercd = wup_tsk(TASK4);
721 check_ercd(ercd, E_OK);
722
723 check_point(57);
724 ercd = wup_tsk(TASK5);
725 check_ercd(ercd, E_OK);
726
727 check_point(67);
728 ercd = wup_tsk(TASK5);
729 check_ercd(ercd, E_OK);
730
731 check_point(70);
732 ercd = wup_tsk(TASK3);
733 check_ercd(ercd, E_OK);
734
735 check_point(72);
736 ercd = wup_tsk(TASK1);
737 check_ercd(ercd, E_OK);
738
739 check_point(75);
740 ercd = wup_tsk(TASK4);
741 check_ercd(ercd, E_OK);
742
743 check_point(77);
744 ercd = wup_tsk(TASK5);
745 check_ercd(ercd, E_OK);
746
747 check_point(104);
748 ercd = ini_mtx(MTX1);
749 check_ercd(ercd, E_OK);
750
751 check_point(106);
752 ercd = ter_tsk(TASK1);
753 check_ercd(ercd, E_OK);
754
755 check_finish(107);
756
757 check_point(0);
758}
759
760void
761task3(intptr_t exinf)
762{
763 ER ercd;
764
765 check_point(16);
766 ercd = slp_tsk();
767 check_ercd(ercd, E_OK);
768
769 check_point(29);
770 ercd = slp_tsk();
771 check_ercd(ercd, E_OK);
772
773 check_point(52);
774 ercd = loc_mtx(MTX4);
775 check_ercd(ercd, E_OK);
776
777 check_point(61);
778 ercd = unl_mtx(MTX4);
779 check_ercd(ercd, E_OK);
780
781 check_point(66);
782 ercd = slp_tsk();
783 check_ercd(ercd, E_OK);
784
785 check_point(71);
786 ercd = loc_mtx(MTX4);
787 check_ercd(ercd, E_OK);
788
789 check_point(81);
790 ercd = unl_mtx(MTX4);
791 check_ercd(ercd, E_OK);
792
793 check_point(86);
794 ercd = slp_tsk();
795 check_ercd(ercd, E_OK);
796
797 check_point(91);
798 ercd = loc_mtx(MTX1);
799 check_ercd(ercd, E_DLT);
800
801 check_point(97);
802 ercd = slp_tsk();
803 check_ercd(ercd, E_OK);
804
805 check_point(101);
806 ercd = loc_mtx(MTX1);
807 check_ercd(ercd, E_DLT);
808
809 check_point(105);
810 ercd = ext_tsk();
811
812 check_point(0);
813}
814
815void
816task4(intptr_t exinf)
817{
818 ER ercd;
819 PRI tskpri;
820
821 check_point(18);
822 ercd = wup_tsk(TASK1);
823 check_ercd(ercd, E_OK);
824
825 check_point(19);
826 ercd = slp_tsk();
827 check_ercd(ercd, E_OK);
828
829 check_point(31);
830 ercd = wup_tsk(TASK1);
831 check_ercd(ercd, E_OK);
832
833 check_point(32);
834 ercd = rot_rdq(MID_PRIORITY);
835 check_ercd(ercd, E_OK);
836
837 check_point(35);
838 ercd = get_pri(TASK1, &tskpri);
839 check_ercd(ercd, E_OK);
840 check_assert(tskpri == LOW_PRIORITY);
841
842 check_point(36);
843 ercd = slp_tsk();
844 check_ercd(ercd, E_OK);
845
846 check_point(56);
847 ercd = loc_mtx(MTX4);
848 check_ercd(ercd, E_OK);
849
850 check_point(63);
851 ercd = unl_mtx(MTX4);
852 check_ercd(ercd, E_OK);
853
854 check_point(64);
855 ercd = slp_tsk();
856 check_ercd(ercd, E_OK);
857
858 check_point(76);
859 ercd = loc_mtx(MTX4);
860 check_ercd(ercd, E_OK);
861
862 check_point(83);
863 ercd = unl_mtx(MTX4);
864 check_ercd(ercd, E_OK);
865
866 check_point(84);
867 ercd = slp_tsk();
868 check_ercd(ercd, E_OK);
869
870 check_point(96);
871 ercd = ext_tsk();
872
873 check_point(0);
874}
875
876void
877task5(intptr_t exinf)
878{
879 ER ercd;
880 PRI tskpri;
881
882 check_point(4);
883 ercd = ini_mtx(MTX1);
884 check_ercd(ercd, E_OK);
885
886 ercd = get_pri(TASK1, &tskpri);
887 check_ercd(ercd, E_OK);
888 check_assert(tskpri == LOW_PRIORITY);
889
890 check_point(5);
891 ercd = slp_tsk();
892 check_ercd(ercd, E_OK);
893
894 check_point(14);
895 ercd = ini_mtx(MTX1);
896 check_ercd(ercd, E_OK);
897
898 ercd = get_pri(TASK1, &tskpri);
899 check_ercd(ercd, E_OK);
900 check_assert(tskpri == MID_PRIORITY);
901
902 check_point(15);
903 ercd = slp_tsk();
904 check_ercd(ercd, E_OK);
905
906 check_point(27);
907 ercd = ini_mtx(MTX3);
908 check_ercd(ercd, E_OK);
909
910 ercd = get_pri(TASK1, &tskpri);
911 check_ercd(ercd, E_OK);
912 check_assert(tskpri == MID_PRIORITY);
913
914 check_point(28);
915 ercd = slp_tsk();
916 check_ercd(ercd, E_OK);
917
918 check_point(38);
919 ercd = loc_mtx(MTX4);
920 check_ercd(ercd, E_OK);
921
922 check_point(39);
923 ercd = tslp_tsk(10);
924 check_ercd(ercd, E_TMOUT);
925
926 check_point(43);
927 ercd = ini_mtx(MTX1);
928 check_ercd(ercd, E_OK);
929
930 ercd = get_pri(TASK1, &tskpri);
931 check_ercd(ercd, E_OK);
932 check_assert(tskpri == LOW_PRIORITY);
933
934 check_point(44);
935 ercd = unl_mtx(MTX4);
936 check_ercd(ercd, E_OK);
937
938 check_point(45);
939 ercd = slp_tsk();
940 check_ercd(ercd, E_OK);
941
942 check_point(49);
943 ercd = loc_mtx(MTX4);
944 check_ercd(ercd, E_OK);
945
946 check_point(50);
947 ercd = slp_tsk();
948 check_ercd(ercd, E_OK);
949
950 check_point(58);
951 ercd = ini_mtx(MTX1);
952 check_ercd(ercd, E_OK);
953
954 ercd = get_pri(TASK1, &tskpri);
955 check_ercd(ercd, E_OK);
956 check_assert(tskpri == MID_PRIORITY);
957
958 check_point(59);
959 ercd = unl_mtx(MTX4);
960 check_ercd(ercd, E_OK);
961
962 check_point(60);
963 ercd = slp_tsk();
964 check_ercd(ercd, E_OK);
965
966 check_point(68);
967 ercd = loc_mtx(MTX4);
968 check_ercd(ercd, E_OK);
969
970 check_point(69);
971 ercd = slp_tsk();
972 check_ercd(ercd, E_OK);
973
974 check_point(78);
975 ercd = ini_mtx(MTX3);
976 check_ercd(ercd, E_OK);
977
978 ercd = get_pri(TASK1, &tskpri);
979 check_ercd(ercd, E_OK);
980 check_assert(tskpri == MID_PRIORITY);
981
982 check_point(79);
983 ercd = unl_mtx(MTX4);
984 check_ercd(ercd, E_OK);
985
986 check_point(80);
987 ercd = slp_tsk();
988 check_ercd(ercd, E_OK);
989
990 check_point(93);
991 ercd = wup_tsk(TASK4);
992 check_ercd(ercd, E_OK);
993
994 check_point(94);
995 ercd = ini_mtx(MTX1);
996 check_ercd(ercd, E_OK);
997
998 check_point(95);
999 ercd = ext_tsk();
1000
1001 check_point(0);
1002}
Note: See TracBrowser for help on using the repository browser.