source: asp3_wo_tecs/trunk/test/test_mutex5.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: 28.0 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2007-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_mutex5.c 310 2015-02-08 13:46:46Z ertl-hiro $
53 */
54
55/*
56 * ミューテックスのテスト(5)
57 *
58 * 【テストの目的】
59 *
60 * 優å…
61ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã«å¯¾ã—て,ミューテックスの再初期化処理を網
62 * 羅
63的にテストする.ただし,change_priorityとmutex_calc_priorityの内
64
65 * 容には踏み込まない.
66 *
67 * 【テスト項
68目】
69 *
70 * (A) ミューテックスの初期化(ini_mtx)に伴うミューテックスをロックし
71 * ていたタスク(実行できる状æ…
72‹ï¼‰ã®å„ªå…
73ˆåº¦å¤‰æ›´
74 * (A-1) 初期化したミューテックスの上限優å…
75ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
76 * ロックしていたタスク(実行できる状æ…
77‹ï¼‰ã®ç¾åœ¨å„ªå…
78ˆåº¦ã¨åŒã˜
79 * で,ミューテックスのロック解除で優å…
80ˆåº¦ãŒä¸‹ãŒã‚‹ã¹ãå ´åˆã«ï¼Œ
81 * 当該タスクの優å…
82ˆåº¦ãŒé©åˆ‡ã«ä¸‹ã’られること.また,同じ優å…
83ˆ
84 * 度内
85での優å…
86ˆé †ä½ãŒæœ€é«˜ã«ãªã‚‹ã“と
87 * (A-2) 初期化したミューテックスの上限優å…
88ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
89 * ロックしていたタスク(実行できる状æ…
90‹ï¼‰ã®ç¾åœ¨å„ªå…
91ˆåº¦ã¨åŒã˜
92 * で,ミューテックスのロック解除で優å…
93ˆåº¦ãŒå¤‰ã‚ã‚‹ã¹ãã§ãªã„
94 * 場合に,当該タスクの優å…
95ˆåº¦ãŒå¤‰ã‚ã‚‰ãªã„こと.また,同じ優
96 * å…
97ˆåº¦å†…
98での優å…
99ˆé †ä½ãŒå¤‰ã‚ã‚‰ãªã„こと
100 * (A-3) 初期化したミューテックスの上限優å…
101ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
102 * ロックしていたタスク(実行できる状æ…
103‹ï¼‰ã®ç¾åœ¨å„ªå…
104ˆåº¦ã‚ˆã‚Šã‚‚
105 * 低い場合に,当該タスクの優å…
106ˆåº¦ãŒå¤‰ã‚ã‚‰ãªã„こと.また,同
107 * じ優å…
108ˆåº¦å†…
109での優å…
110ˆé †ä½ãŒå¤‰ã‚ã‚‰ãªã„こと
111 * (A-4) (A-1)の結果,タスクディスパッチが起こること.
112 * (B) ミューテックスの初期化(ini_mtx)に伴うミューテックスをロックし
113 * ていたタスク(待
114ち状æ…
115‹ï¼‰ã®å„ªå…
116ˆåº¦å¤‰æ›´
117 * (B-1) 初期化したミューテックスの上限優å…
118ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
119 * ロックしていたタスク(待
120ち状æ…
121‹ï¼‰ã®ç¾åœ¨å„ªå…
122ˆåº¦ã¨åŒã˜ã§ï¼Œ
123 * ミューテックスのロック解除で優å…
124ˆåº¦ãŒä¸‹ãŒã‚‹ã¹ãå ´åˆã«ï¼Œå½“
125 * 該タスクの優å…
126ˆåº¦ãŒé©åˆ‡ã«ä¸‹ã’られること.また,同じ優å…
127ˆåº¦
128 * 内
129での順序が最後になること
130 * (B-2) 初期化したミューテックスの上限優å…
131ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
132 * ロックしていたタスク(待
133ち状æ…
134‹ï¼‰ã®ç¾åœ¨å„ªå…
135ˆåº¦ã¨åŒã˜ã§ï¼Œ
136 * ミューテックスのロック解除で優å…
137ˆåº¦ãŒå¤‰ã‚ã‚‹ã¹ãã§ãªã„場合
138 * に,当該タスクの優å…
139ˆåº¦ãŒå¤‰ã‚ã‚‰ãªã„こと.また,同じ優å…
140ˆåº¦
141 * 内
142での順序が変わらないこと
143 * (B-3) 初期化したミューテックスの上限優å…
144ˆåº¦ãŒï¼ŒãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’
145 * ロックしていたタスク(待
146ち状æ…
147‹ï¼‰ã®ç¾åœ¨å„ªå…
148ˆåº¦ã‚ˆã‚Šã‚‚低い場
149 * 合に,当該タスクの優å…
150ˆåº¦ãŒå¤‰ã‚ã‚‰ãªã„こと.また,同じ優å…
151ˆ
152 * 度内
153での順序が変わらないこと
154 * (C) ミューテックスの初期化(ini_mtx)に伴うミューテックスを待
155ってい
156 * たタスクの状æ…
157‹å¤‰åŒ–
158 * (C-1) ミューテックスを待
159っていたタスクが待
160ち解除されること.
161 * (C-2) (C-1)の結果,タスクディスパッチが起こること.
162 *
163 * 【テスト項
164目の実現方法】
165 *
166 * (A-1)
167 * 低優å…
168ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
169ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX1)を
170 * ロックした状æ…
171‹ã§ï¼Œé«˜å„ªå…
172ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK5)からMTX1を再初期化し,
173 * TASK1の優å…
174ˆåº¦ãŒä½Žå„ªå…
175ˆåº¦ã«ä¸‹ãŒã‚‹ã“とを確認する.また,実行可能状
176 * æ…
177‹ã®ä½Žå„ªå…
178ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK2)よりも,優å…
179ˆé †ä½ãŒé«˜ããªã‚‹ã“とを確認
180 * する. 
181 * (A-2)
182 * 低優å…
183ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
184ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’2つ
185 * (MTX1,MTX2)をロックした状æ…
186‹ã§ï¼Œé«˜å„ªå…
187ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK5)から
188 * MTX1を再初期化し,TASK1の優å…
189ˆåº¦ãŒå¤‰åŒ–しないことを確認する.また,
190 * 実行可能状æ…
191‹ã®ä¸­å„ªå…
192ˆåº¦ã‚¿ã‚¹ã‚¯ã‚’2つ(TASK3,TASK4)を用意しておき,
193 * 優å…
194ˆé †ä½ãŒå¤‰ã‚ã‚‰ãªã„ことを確認する.
195 * (A-3)
196 * 低優å…
197ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
198ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX2)と
199 * 低優å…
200ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX3)をロックした状æ…
201‹ã§ï¼Œé«˜å„ªå…
202ˆåº¦
203 * タスク(TASK5)からMTX3を再初期化し,TASK1の優å…
204ˆåº¦ãŒå¤‰åŒ–しない
205 * ことを確認する.また,実行可能状æ…
206‹ã®ä¸­å„ªå…
207ˆåº¦ã‚¿ã‚¹ã‚¯ã‚’2つ(TASK3,
208 * TASK4)を用意しておき,優å…
209ˆé †ä½ãŒå¤‰ã‚ã‚‰ãªã„ことを確認する.
210 * (A-4)
211 * 低優å…
212ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
213ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX2)を
214 * ロックした状æ…
215‹ã§ï¼ŒTASK1からMTX2を再初期化し,TASK1の優å…
216ˆåº¦ãŒä½Ž
217 * 優å…
218ˆåº¦ã«ä¸‹ãŒã‚Šï¼Œå®Ÿè¡Œå¯èƒ½çŠ¶æ…
219‹ã®ä¸­å„ªå…
220ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK4)に切り換わ
221 * ることを確認する.また,実行可能状æ…
222‹ã®ä½Žå„ªå…
223ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK2)よ
224 * りも,優å…
225ˆé †ä½ãŒé«˜ããªã‚‹ã“とを確認する. 
226 * (B-1)
227 * 低優å…
228ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
229ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX1)を
230 * ロックした状æ…
231‹ã§ï¼Œåˆ¥ã®ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX4)待
232ち状æ…
233‹ã¨ã—,高優
234 * å…
235ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK5)からMTX1を再初期化し,TASK1の優å…
236ˆåº¦ãŒä½Žå„ªå…
237ˆ
238 * 度に下がることを確認する.また,MTX4待
239ち状æ…
240‹ã®ä½Žå„ªå…
241ˆåº¦ã‚¿ã‚¹ã‚¯
242 * (TASK2)よりも,待
243ち行列中での順序が後になることを確認する.
244 * (B-2)
245 * 低優å…
246ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
247ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ã‚’2つ
248 * (MTX1,MTX2)をロックした状æ…
249‹ã§ï¼Œåˆ¥ã®ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX4)待
250
251 * ち状æ…
252‹ã¨ã—,高優å…
253ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK5)からMTX1を再初期化し,TASK1
254 * の優å…
255ˆåº¦ãŒå¤‰åŒ–しないことを確認する.また,MTX4待
256ち状æ…
257‹ã®ä¸­å„ªå…
258ˆ
259 * 度タスクを2つ(TASK3,TASK4)を用意しておき,待
260ち行列中での順序
261 * が変わらないことを確認する.
262 * (B-3)
263 * 低優å…
264ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が,中優å…
265ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX2)と
266 * 低優å…
267ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX3)をロックした状æ…
268‹ã§ï¼Œåˆ¥ã®ãƒŸãƒ¥ãƒ¼
269 * テックス(MTX4)待
270ち状æ…
271‹ã¨ã—,高優å…
272ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK5)からMTX3を
273 * 再初期化し,TASK1の優å…
274ˆåº¦ãŒå¤‰åŒ–しないことを確認する.また,
275 * MTX4待
276ち状æ…
277‹ã®ä¸­å„ªå…
278ˆåº¦ã‚¿ã‚¹ã‚¯ã‚’2つ(TASK3,TASK4)を用意しておき,
279 * 待
280ち行列中での順序が変わらないことを確認する.
281 * (C-1)
282 * 低優å…
283ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が中優å…
284ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX1)をロッ
285 * クし,中優å…
286ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK3)がMTX1を待
287っている状æ…
288‹ã§ï¼Œé«˜å„ªå…
289ˆåº¦
290 * タスク(TASK5)からMTX1を再初期化し,TASK3が待
291ち解除されること
292 * を確認する.また,実行可能状æ…
293‹ã®ä¸­å„ªå…
294ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK4)よりも,
295 * TASK3の方が優å…
296ˆé †ä½ãŒä½Žããªã‚‹ã“とを確認する. 
297 * (C-2)
298 * 低優å…
299ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK1)が中優å…
300ˆåº¦ä¸Šé™ãƒŸãƒ¥ãƒ¼ãƒ†ãƒƒã‚¯ã‚¹ï¼ˆMTX1)をロッ
301 * クし,中優å…
302ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK3)がMTX1を待
303ち,TASK1を起床待
304ち状æ…
305‹
306 * とした状æ…
307‹ã§ï¼Œåˆ¥ã®ä½Žå„ªå…
308ˆåº¦ã‚¿ã‚¹ã‚¯ï¼ˆTASK2)からMTX1を再初期化し,
309 * TASK3が待
310ち解除され,TASK3に切り換わることを確認する.
311 *
312 * 【使用リソース】
313 *
314 * TASK1: 低優å…
315ˆåº¦ã‚¿ã‚¹ã‚¯ï¼Œãƒ¡ã‚¤ãƒ³ã‚¿ã‚¹ã‚¯ï¼Œæœ€åˆã‹ã‚‰èµ·å‹•
316 * TASK2: 低優å…
317ˆåº¦ã‚¿ã‚¹ã‚¯
318 * TASK3: 中優å…
319ˆåº¦ã‚¿ã‚¹ã‚¯
320 * TASK4: 中優å…
321ˆåº¦ã‚¿ã‚¹ã‚¯
322 * TASK5: 高優å…
323ˆåº¦ã‚¿ã‚¹ã‚¯
324 * MTX1: ミューテックス(TA_CEILING属性,上限は中優å…
325ˆåº¦ï¼‰
326 * MTX2: ミューテックス(TA_CEILING属性,上限は中優å…
327ˆåº¦ï¼‰
328 * MTX3: ミューテックス(TA_CEILING属性,上限は低優å…
329ˆåº¦ï¼‰
330 * MTX4: ミューテックス(TA_CEILING属性,上限は高優å…
331ˆåº¦ï¼‰
332 *
333 * 【テストシーケンス】
334 *
335 * == TASK1(優å…
336ˆåº¦ï¼šä½Žï¼‰==
337 * call(set_bit_func(bit_mutex))
338 * 1: loc_mtx(MTX1)
339 * 2: act_tsk(TASK2)
340 * 3: act_tsk(TASK5)
341 * // 高:TASK5,中:TASK1,低:TASK2,MTX1:TASK1
342 * == TASK5(優å…
343ˆåº¦ï¼šé«˜ï¼‰==
344 * 4: ini_mtx(MTX1) ... (A-1)
345 * // 高:TASK5,低:TASK1→TASK2
346 * get_pri(TASK1, &tskpri)
347 * assert(tskpri == LOW_PRIORITY)
348 * 5: slp_tsk()
349 * // 低:TASK1→TASK2
350 *
351 * == TASK1(続き)==
352 * 6: sus_tsk(TASK2)
353 * 7: loc_mtx(MTX1)
354 * loc_mtx(MTX2)
355 * 8: act_tsk(TASK3)
356 * // 中:TASK1→TASK3,MTX1:TASK1,MTX2:TASK1
357 * 9: dis_dsp()
358 * 10: rot_rdq(MID_PRIORITY)
359 * // 中:TASK3→TASK1,MTX1:TASK1,MTX2:TASK1
360 * 11: act_tsk(TASK4)
361 * // 中:TASK3→TASK1→TASK4,MTX1:TASK1,MTX2:TASK1
362 * 12: wup_tsk(TASK5)
363 * // 高:TASK5,中:TASK3→TASK1→TASK4,MTX1:TASK1,MTX2:TASK1
364 * 13: ena_dsp()
365 * == TASK5(続き)==
366 * 14: ini_mtx(MTX1) ... (A-2)
367 * // 高:TASK5,中:TASK3→TASK1→TASK4,MTX2:TASK1
368 * get_pri(TASK1, &tskpri)
369 * assert(tskpri == MID_PRIORITY)
370 * 15: slp_tsk()
371 * // 中:TASK3→TASK1→TASK4,MTX2:TASK1
372 * == TASK3(優å…
373ˆåº¦ï¼šä¸­ï¼‰==
374 * 16: slp_tsk()
375 * // 中:TASK1→TASK4,MTX2:TASK1
376 * == TASK1(続き)==
377 * 17: slp_tsk()
378 * // 中:TASK4,MTX2:TASK1
379 * == TASK4(優å…
380ˆåº¦ï¼šä¸­ï¼‰==
381 * 18: wup_tsk(TASK1)
382 * // 中:TASK4→TASK1,MTX2:TASK1
383 * 19: slp_tsk()
384 * // 中:TASK1,MTX2:TASK1
385 *
386 * == TASK1(続き)==
387 * 20: loc_mtx(MTX3)
388 * // 中:TASK1,MTX2:TASK1,MTX3:TASK1
389 * 21: wup_tsk(TASK3)
390 * // 中:TASK1→TASK3,MTX2:TASK1,MTX3:TASK1
391 * 22: dis_dsp()
392 * 23: rot_rdq(MID_PRIORITY)
393 * // 中:TASK3→TASK1,MTX2:TASK1,MTX3:TASK1
394 * 24: wup_tsk(TASK4)
395 * // 中:TASK3→TASK1→TASK4,MTX2:TASK1,MTX3:TASK1
396 * 25: wup_tsk(TASK5)
397 * // 高:TASK5,中:TASK3→TASK1→TASK4,MTX2:TASK1,MTX3:TASK1
398 * 26: ena_dsp()
399 * == TASK5(続き)==
400 * 27: ini_mtx(MTX3) ... (A-3)
401 * // 高:TASK5,中:TASK3→TASK1→TASK4,MTX2:TASK1
402 * get_pri(TASK1, &tskpri)
403 * assert(tskpri == MID_PRIORITY)
404 * 28: slp_tsk()
405 * // 中:TASK3→TASK1→TASK4,MTX2:TASK1
406 * == TASK3(続き)==
407 * 29: slp_tsk()
408 * // 中:TASK1→TASK4,MTX2:TASK1
409 *
410 * == TASK1(続き)==
411 * 30: slp_tsk()
412 * // 中:TASK4,MTX2:TASK1
413 * == TASK4(続き)==
414 * 31: wup_tsk(TASK1)
415 * // 中:TASK4→TASK1,MTX2:TASK1
416 * 32: rot_rdq(MID_PRIORITY)
417 * // 中:TASK1→TASK4,MTX2:TASK1
418 * == TASK1(続き)==
419 * 33: rsm_tsk(TASK2)
420 * // 中:TASK1→TASK4,低:TASK2,MTX2:TASK1
421 * 34: ini_mtx(MTX2) ... (A-4)
422 * // 中:TASK4,低:TASK1→TASK2
423 * == TASK4(続き)==
424 * 35: get_pri(TASK1, &tskpri)
425 * assert(tskpri == LOW_PRIORITY)
426 * 36: slp_tsk()
427 * // 低:TASK1→TASK2
428 *
429 * == TASK1(続き)==
430 * 37: wup_tsk(TASK5)
431 * == TASK5(続き)==
432 * 38: loc_mtx(MTX4)
433 * 39: tslp_tsk(10000U) -> E_TMOUT
434 * // 低:TASK1→TASK2,MTX4:TASK5
435 * == TASK1(続き)==
436 * 40: loc_mtx(MTX1)
437 * // 中:TASK1,低:TASK2,MTX1:TASK1,MTX4:TASK5
438 * 41: loc_mtx(MTX4)
439 * // 低:TASK2,MTX1:TASK1,MTX4:TASK5→TASK1
440 * == TASK2(優å…
441ˆåº¦ï¼šä½Žï¼‰==
442 * 42: loc_mtx(MTX4)
443 * // MTX1:TASK1,MTX4:TASK5→TASK1→TASK2
444 * // タイムアウト待
445ち
446 * // 高:TASK5,MTX1:TASK1,MTX4:TASK5→TASK1→TASK2
447 * == TASK5(続き)==
448 * 43: ini_mtx(MTX1) ... (B-1)
449 * // 高:TASK5,MTX4:TASK5→TASK2→TASK1
450 * get_pri(TASK1, &tskpri)
451 * assert(tskpri == LOW_PRIORITY)
452 * 44: unl_mtx(MTX4)
453 * // 高:TASK5→TASK2,MTX4:TASK2→TASK1
454 * 45: slp_tsk()
455 * // 高:TASK2,MTX4:TASK2→TASK1
456 * == TASK2(続き)==
457 * 46: unl_mtx(MTX4)
458 * // 高:TASK1,低:TASK2,MTX4:TASK1
459 * == TASK1(続き)==
460 * 47: unl_mtx(MTX4)
461 * // 低:TASK1→TASK2
462 *
463 * 48: wup_tsk(TASK5)
464 * == TASK5(続き)==
465 * 49: loc_mtx(MTX4)
466 * 50: slp_tsk()
467 * // 低:TASK1→TASK2,MTX4:TASK5
468 * == TASK1(続き)==
469 * 51: wup_tsk(TASK3)
470 * // 中:TASK3,低:TASK1→TASK2,MTX4:TASK5
471 * == TASK3(続き)==
472 * 52: loc_mtx(MTX4)
473 * // 低:TASK1→TASK2,MTX4:TASK5→TASK3
474 * == TASK1(続き)==
475 * 53: loc_mtx(MTX1)
476 * loc_mtx(MTX2)
477 * // 中:TASK1,低:TASK2,MTX1:TASK1,MTX2:TASK1,MTX4:TASK5→TASK3
478 * 54: loc_mtx(MTX4)
479 * // 低:TASK2,MTX1:TASK1,MTX2:TASK1,MTX4:TASK5→TASK3→TASK1
480 * == TASK2(続き)==
481 * 55: wup_tsk(TASK4)
482 * == TASK4(続き)==
483 * 56: loc_mtx(MTX4)
484 * // 低:TASK2,MTX1:TASK1,MTX2:TASK1,
485 * // MTX4:TASK5→TASK3→TASK1→TASK4
486 * == TASK2(続き)==
487 * 57: wup_tsk(TASK5)
488 * // 高:TASK5,低:TASK2,MTX1:TASK1,MTX2:TASK1,
489 * // MTX4:TASK5→TASK3→TASK1→TASK4
490 * == TASK5(続き)==
491 * 58: ini_mtx(MTX1) ... (B-2)
492 * // 高:TASK5,低:TASK2,MTX2:TASK1,MTX4:TASK5→TASK3→TASK1→TASK4
493 * get_pri(TASK1, &tskpri)
494 * assert(tskpri == MID_PRIORITY)
495 * 59: unl_mtx(MTX4)
496 * // 高:TASK5→TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK3→TASK1→TASK4
497 * 60: slp_tsk()
498 * // 高:TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK3→TASK1→TASK4
499 * == TASK3(続き)==
500 * 61: unl_mtx(MTX4)
501 * // 高:TASK1,中:TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK1→TASK4
502 * == TASK1(続き)==
503 * 62: unl_mtx(MTX4)
504 * // 高:TASK4,中:TASK1→TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK4
505 * == TASK4(続き)==
506 * 63: unl_mtx(MTX4)
507 * // 中:TASK4→TASK1→TASK3,低:TASK2,MTX2:TASK1
508 * 64: slp_tsk()
509 * // 中:TASK1→TASK3,低:TASK2,MTX2:TASK1
510 * == TASK1(続き)==
511 * 65: slp_tsk()
512 * // 中:TASK3,低:TASK2,MTX2:TASK1
513 * == TASK3(続き)==
514 * 66: slp_tsk()
515 * // 低:TASK2,MTX2:TASK1
516 *
517 * == TASK2(続き)==
518 * 67: wup_tsk(TASK5)
519 * == TASK5(続き)==
520 * 68: loc_mtx(MTX4)
521 * 69: slp_tsk()
522 * // 低:TASK2,MTX4:TASK5
523 * == TASK2(続き)==
524 * 70: wup_tsk(TASK3)
525 * == TASK3(続き)==
526 * 71: loc_mtx(MTX4)
527 * // 低:TASK2,MTX4:TASK5→TASK3
528 * == TASK2(続き)==
529 * 72: wup_tsk(TASK1)
530 * // 中:TASK1,低:TASK2,MTX4:TASK5
531 * == TASK1(続き)==
532 * 73: loc_mtx(MTX3)
533 * // 中:TASK1,低:TASK2,MTX2:TASK1,MTX3:TASK1,MTX4:TASK5→TASK3
534 * 74: loc_mtx(MTX4)
535 * // 低:TASK2,MTX2:TASK1,MTX3:TASK1,MTX4:TASK5→TASK3→TASK1
536 * == TASK2(続き)==
537 * 75: wup_tsk(TASK4)
538 * == TASK4(続き)==
539 * 76: loc_mtx(MTX4)
540 * // 低:TASK2,MTX2:TASK1,MTX3:TASK1,
541 * // MTX4:TASK5→TASK3→TASK1→TASK4
542 * == TASK2(続き)==
543 * 77: wup_tsk(TASK5)
544 * // 高:TASK5,低:TASK2,MTX2:TASK1,MTX3:TASK1,
545 * // MTX4:TASK5→TASK3→TASK1→TASK4
546 * == TASK5(続き)==
547 * 78: ini_mtx(MTX3) ... (B-3)
548 * // 高:TASK5,低:TASK2,MTX2:TASK1,MTX4:TASK5→TASK3→TASK1→TASK4
549 * get_pri(TASK1, &tskpri)
550 * assert(tskpri == MID_PRIORITY)
551 * 79: unl_mtx(MTX4)
552 * // 高:TASK5→TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK3→TASK1→TASK4
553 * 80: slp_tsk()
554 * // 高:TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK3→TASK1→TASK4
555 * == TASK3(続き)==
556 * 81: unl_mtx(MTX4)
557 * // 高:TASK1,中:TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK1→TASK4
558 * == TASK1(続き)==
559 * 82: unl_mtx(MTX4)
560 * // 高:TASK4,中:TASK1→TASK3,低:TASK2,MTX2:TASK1,MTX4:TASK4
561 * == TASK4(続き)==
562 * 83: unl_mtx(MTX4)
563 * // 中:TASK4→TASK1→TASK3,低:TASK2,MTX2:TASK1
564 * 84: slp_tsk()
565 * // 中:TASK1→TASK3,低:TASK2,MTX2:TASK1
566 * == TASK1(続き)==
567 * 85: unl_mtx(MTX2)
568 * // 中:TASK3,低:TASK1→TASK2
569 * == TASK3(続き)==
570 * 86: slp_tsk()
571 * // 低:TASK1→TASK2
572 *
573 * == TASK1(続き)==
574 * 87: sus_tsk(TASK2)
575 * // 低:TASK1
576 * 88: loc_mtx(MTX1)
577 * // 中:TASK1,MTX1:TASK1
578 * 89: wup_tsk(TASK3)
579 * // 中:TASK1→TASK3,MTX1:TASK1
580 * 90: rot_rdq(MID_PRIORITY)
581 * // 中:TASK3→TASK1,MTX1:TASK1
582 * == TASK3(続き)==
583 * 91: loc_mtx(MTX1) -> E_DLT
584 * // 中:TASK1,MTX1:TASK1→TASK3
585 * == TASK1(続き)==
586 * 92: wup_tsk(TASK5)
587 * // 高:TASK5,中:TASK1,MTX1:TASK1→TASK3
588 * == TASK5(続き)==
589 * 93: wup_tsk(TASK4)
590 * // 高:TASK5,中:TASK1→TASK4,MTX1:TASK1→TASK3
591 * 94: ini_mtx(MTX1) ... (C-1)
592 * // 高:TASK5,中:TASK4→TASK3,低:TASK1
593 * 95: ext_tsk() -> noreturn
594 * // 中:TASK4→TASK3,低:TASK1
595 * == TASK4(続き)==
596 * 96: ext_tsk() -> noreturn
597 * // 中:TASK3,低:TASK1
598 * == TASK3(続き)==
599 * 97: slp_tsk()
600 * // 低:TASK1
601 *
602 * == TASK1(続き)==
603 * 98: loc_mtx(MTX1)
604 * // 中:TASK1,MTX1:TASK1
605 * 99: wup_tsk(TASK3)
606 * // 中:TASK1→TASK3,MTX1:TASK1
607 * 100: rot_rdq(MID_PRIORITY)
608 * // 中:TASK3→TASK1,MTX1:TASK1
609 * == TASK3(続き)==
610 * 101: loc_mtx(MTX1) -> E_DLT
611 * // 中:TASK1,MTX1:TASK1→TASK3
612 * == TASK1(続き)==
613 * 102: rsm_tsk(TASK2)
614 * // 中:TASK1,低:TASK2,MTX1:TASK1→TASK3
615 * 103: slp_tsk()
616 * // 低:TASK2,MTX1:TASK1→TASK3
617 * == TASK2(続き)==
618 * 104: ini_mtx(MTX1) ... (C-2)
619 * // 中:TASK3,低:TASK2
620 * == TASK3(続き)==
621 * 105: ext_tsk() -> noreturn
622 * // 低:TASK2
623 * == TASK2(続き)==
624 * 106: ter_tsk(TASK1)
625 * 107: END
626 */
627
628#include <kernel.h>
629#include <t_syslog.h>
630#include "syssvc/test_svc.h"
631#include "kernel_cfg.h"
632#include "test_mutex5.h"
633
634extern ER bit_mutex(void);
635
636/* DO NOT DELETE THIS LINE -- gentest depends on it. */
637
638void
639task1(intptr_t exinf)
640{
641 ER_UINT ercd;
642
643 test_start(__FILE__);
644
645 set_bit_func(bit_mutex);
646
647 check_point(1);
648 ercd = loc_mtx(MTX1);
649 check_ercd(ercd, E_OK);
650
651 check_point(2);
652 ercd = act_tsk(TASK2);
653 check_ercd(ercd, E_OK);
654
655 check_point(3);
656 ercd = act_tsk(TASK5);
657 check_ercd(ercd, E_OK);
658
659 check_point(6);
660 ercd = sus_tsk(TASK2);
661 check_ercd(ercd, E_OK);
662
663 check_point(7);
664 ercd = loc_mtx(MTX1);
665 check_ercd(ercd, E_OK);
666
667 ercd = loc_mtx(MTX2);
668 check_ercd(ercd, E_OK);
669
670 check_point(8);
671 ercd = act_tsk(TASK3);
672 check_ercd(ercd, E_OK);
673
674 check_point(9);
675 ercd = dis_dsp();
676 check_ercd(ercd, E_OK);
677
678 check_point(10);
679 ercd = rot_rdq(MID_PRIORITY);
680 check_ercd(ercd, E_OK);
681
682 check_point(11);
683 ercd = act_tsk(TASK4);
684 check_ercd(ercd, E_OK);
685
686 check_point(12);
687 ercd = wup_tsk(TASK5);
688 check_ercd(ercd, E_OK);
689
690 check_point(13);
691 ercd = ena_dsp();
692 check_ercd(ercd, E_OK);
693
694 check_point(17);
695 ercd = slp_tsk();
696 check_ercd(ercd, E_OK);
697
698 check_point(20);
699 ercd = loc_mtx(MTX3);
700 check_ercd(ercd, E_OK);
701
702 check_point(21);
703 ercd = wup_tsk(TASK3);
704 check_ercd(ercd, E_OK);
705
706 check_point(22);
707 ercd = dis_dsp();
708 check_ercd(ercd, E_OK);
709
710 check_point(23);
711 ercd = rot_rdq(MID_PRIORITY);
712 check_ercd(ercd, E_OK);
713
714 check_point(24);
715 ercd = wup_tsk(TASK4);
716 check_ercd(ercd, E_OK);
717
718 check_point(25);
719 ercd = wup_tsk(TASK5);
720 check_ercd(ercd, E_OK);
721
722 check_point(26);
723 ercd = ena_dsp();
724 check_ercd(ercd, E_OK);
725
726 check_point(30);
727 ercd = slp_tsk();
728 check_ercd(ercd, E_OK);
729
730 check_point(33);
731 ercd = rsm_tsk(TASK2);
732 check_ercd(ercd, E_OK);
733
734 check_point(34);
735 ercd = ini_mtx(MTX2);
736 check_ercd(ercd, E_OK);
737
738 check_point(37);
739 ercd = wup_tsk(TASK5);
740 check_ercd(ercd, E_OK);
741
742 check_point(40);
743 ercd = loc_mtx(MTX1);
744 check_ercd(ercd, E_OK);
745
746 check_point(41);
747 ercd = loc_mtx(MTX4);
748 check_ercd(ercd, E_OK);
749
750 check_point(47);
751 ercd = unl_mtx(MTX4);
752 check_ercd(ercd, E_OK);
753
754 check_point(48);
755 ercd = wup_tsk(TASK5);
756 check_ercd(ercd, E_OK);
757
758 check_point(51);
759 ercd = wup_tsk(TASK3);
760 check_ercd(ercd, E_OK);
761
762 check_point(53);
763 ercd = loc_mtx(MTX1);
764 check_ercd(ercd, E_OK);
765
766 ercd = loc_mtx(MTX2);
767 check_ercd(ercd, E_OK);
768
769 check_point(54);
770 ercd = loc_mtx(MTX4);
771 check_ercd(ercd, E_OK);
772
773 check_point(62);
774 ercd = unl_mtx(MTX4);
775 check_ercd(ercd, E_OK);
776
777 check_point(65);
778 ercd = slp_tsk();
779 check_ercd(ercd, E_OK);
780
781 check_point(73);
782 ercd = loc_mtx(MTX3);
783 check_ercd(ercd, E_OK);
784
785 check_point(74);
786 ercd = loc_mtx(MTX4);
787 check_ercd(ercd, E_OK);
788
789 check_point(82);
790 ercd = unl_mtx(MTX4);
791 check_ercd(ercd, E_OK);
792
793 check_point(85);
794 ercd = unl_mtx(MTX2);
795 check_ercd(ercd, E_OK);
796
797 check_point(87);
798 ercd = sus_tsk(TASK2);
799 check_ercd(ercd, E_OK);
800
801 check_point(88);
802 ercd = loc_mtx(MTX1);
803 check_ercd(ercd, E_OK);
804
805 check_point(89);
806 ercd = wup_tsk(TASK3);
807 check_ercd(ercd, E_OK);
808
809 check_point(90);
810 ercd = rot_rdq(MID_PRIORITY);
811 check_ercd(ercd, E_OK);
812
813 check_point(92);
814 ercd = wup_tsk(TASK5);
815 check_ercd(ercd, E_OK);
816
817 check_point(98);
818 ercd = loc_mtx(MTX1);
819 check_ercd(ercd, E_OK);
820
821 check_point(99);
822 ercd = wup_tsk(TASK3);
823 check_ercd(ercd, E_OK);
824
825 check_point(100);
826 ercd = rot_rdq(MID_PRIORITY);
827 check_ercd(ercd, E_OK);
828
829 check_point(102);
830 ercd = rsm_tsk(TASK2);
831 check_ercd(ercd, E_OK);
832
833 check_point(103);
834 ercd = slp_tsk();
835 check_ercd(ercd, E_OK);
836
837 check_point(0);
838}
839
840void
841task2(intptr_t exinf)
842{
843 ER_UINT ercd;
844
845 check_point(42);
846 ercd = loc_mtx(MTX4);
847 check_ercd(ercd, E_OK);
848
849 check_point(46);
850 ercd = unl_mtx(MTX4);
851 check_ercd(ercd, E_OK);
852
853 check_point(55);
854 ercd = wup_tsk(TASK4);
855 check_ercd(ercd, E_OK);
856
857 check_point(57);
858 ercd = wup_tsk(TASK5);
859 check_ercd(ercd, E_OK);
860
861 check_point(67);
862 ercd = wup_tsk(TASK5);
863 check_ercd(ercd, E_OK);
864
865 check_point(70);
866 ercd = wup_tsk(TASK3);
867 check_ercd(ercd, E_OK);
868
869 check_point(72);
870 ercd = wup_tsk(TASK1);
871 check_ercd(ercd, E_OK);
872
873 check_point(75);
874 ercd = wup_tsk(TASK4);
875 check_ercd(ercd, E_OK);
876
877 check_point(77);
878 ercd = wup_tsk(TASK5);
879 check_ercd(ercd, E_OK);
880
881 check_point(104);
882 ercd = ini_mtx(MTX1);
883 check_ercd(ercd, E_OK);
884
885 check_point(106);
886 ercd = ter_tsk(TASK1);
887 check_ercd(ercd, E_OK);
888
889 check_finish(107);
890 check_point(0);
891}
892
893void
894task3(intptr_t exinf)
895{
896 ER_UINT ercd;
897
898 check_point(16);
899 ercd = slp_tsk();
900 check_ercd(ercd, E_OK);
901
902 check_point(29);
903 ercd = slp_tsk();
904 check_ercd(ercd, E_OK);
905
906 check_point(52);
907 ercd = loc_mtx(MTX4);
908 check_ercd(ercd, E_OK);
909
910 check_point(61);
911 ercd = unl_mtx(MTX4);
912 check_ercd(ercd, E_OK);
913
914 check_point(66);
915 ercd = slp_tsk();
916 check_ercd(ercd, E_OK);
917
918 check_point(71);
919 ercd = loc_mtx(MTX4);
920 check_ercd(ercd, E_OK);
921
922 check_point(81);
923 ercd = unl_mtx(MTX4);
924 check_ercd(ercd, E_OK);
925
926 check_point(86);
927 ercd = slp_tsk();
928 check_ercd(ercd, E_OK);
929
930 check_point(91);
931 ercd = loc_mtx(MTX1);
932 check_ercd(ercd, E_DLT);
933
934 check_point(97);
935 ercd = slp_tsk();
936 check_ercd(ercd, E_OK);
937
938 check_point(101);
939 ercd = loc_mtx(MTX1);
940 check_ercd(ercd, E_DLT);
941
942 check_point(105);
943 ercd = ext_tsk();
944
945 check_point(0);
946}
947
948void
949task4(intptr_t exinf)
950{
951 ER_UINT ercd;
952 PRI tskpri;
953
954 check_point(18);
955 ercd = wup_tsk(TASK1);
956 check_ercd(ercd, E_OK);
957
958 check_point(19);
959 ercd = slp_tsk();
960 check_ercd(ercd, E_OK);
961
962 check_point(31);
963 ercd = wup_tsk(TASK1);
964 check_ercd(ercd, E_OK);
965
966 check_point(32);
967 ercd = rot_rdq(MID_PRIORITY);
968 check_ercd(ercd, E_OK);
969
970 check_point(35);
971 ercd = get_pri(TASK1, &tskpri);
972 check_ercd(ercd, E_OK);
973
974 check_assert(tskpri == LOW_PRIORITY);
975
976 check_point(36);
977 ercd = slp_tsk();
978 check_ercd(ercd, E_OK);
979
980 check_point(56);
981 ercd = loc_mtx(MTX4);
982 check_ercd(ercd, E_OK);
983
984 check_point(63);
985 ercd = unl_mtx(MTX4);
986 check_ercd(ercd, E_OK);
987
988 check_point(64);
989 ercd = slp_tsk();
990 check_ercd(ercd, E_OK);
991
992 check_point(76);
993 ercd = loc_mtx(MTX4);
994 check_ercd(ercd, E_OK);
995
996 check_point(83);
997 ercd = unl_mtx(MTX4);
998 check_ercd(ercd, E_OK);
999
1000 check_point(84);
1001 ercd = slp_tsk();
1002 check_ercd(ercd, E_OK);
1003
1004 check_point(96);
1005 ercd = ext_tsk();
1006
1007 check_point(0);
1008}
1009
1010void
1011task5(intptr_t exinf)
1012{
1013 ER_UINT ercd;
1014 PRI tskpri;
1015
1016 check_point(4);
1017 ercd = ini_mtx(MTX1);
1018 check_ercd(ercd, E_OK);
1019
1020 ercd = get_pri(TASK1, &tskpri);
1021 check_ercd(ercd, E_OK);
1022
1023 check_assert(tskpri == LOW_PRIORITY);
1024
1025 check_point(5);
1026 ercd = slp_tsk();
1027 check_ercd(ercd, E_OK);
1028
1029 check_point(14);
1030 ercd = ini_mtx(MTX1);
1031 check_ercd(ercd, E_OK);
1032
1033 ercd = get_pri(TASK1, &tskpri);
1034 check_ercd(ercd, E_OK);
1035
1036 check_assert(tskpri == MID_PRIORITY);
1037
1038 check_point(15);
1039 ercd = slp_tsk();
1040 check_ercd(ercd, E_OK);
1041
1042 check_point(27);
1043 ercd = ini_mtx(MTX3);
1044 check_ercd(ercd, E_OK);
1045
1046 ercd = get_pri(TASK1, &tskpri);
1047 check_ercd(ercd, E_OK);
1048
1049 check_assert(tskpri == MID_PRIORITY);
1050
1051 check_point(28);
1052 ercd = slp_tsk();
1053 check_ercd(ercd, E_OK);
1054
1055 check_point(38);
1056 ercd = loc_mtx(MTX4);
1057 check_ercd(ercd, E_OK);
1058
1059 check_point(39);
1060 ercd = tslp_tsk(10000U);
1061 check_ercd(ercd, E_TMOUT);
1062
1063 check_point(43);
1064 ercd = ini_mtx(MTX1);
1065 check_ercd(ercd, E_OK);
1066
1067 ercd = get_pri(TASK1, &tskpri);
1068 check_ercd(ercd, E_OK);
1069
1070 check_assert(tskpri == LOW_PRIORITY);
1071
1072 check_point(44);
1073 ercd = unl_mtx(MTX4);
1074 check_ercd(ercd, E_OK);
1075
1076 check_point(45);
1077 ercd = slp_tsk();
1078 check_ercd(ercd, E_OK);
1079
1080 check_point(49);
1081 ercd = loc_mtx(MTX4);
1082 check_ercd(ercd, E_OK);
1083
1084 check_point(50);
1085 ercd = slp_tsk();
1086 check_ercd(ercd, E_OK);
1087
1088 check_point(58);
1089 ercd = ini_mtx(MTX1);
1090 check_ercd(ercd, E_OK);
1091
1092 ercd = get_pri(TASK1, &tskpri);
1093 check_ercd(ercd, E_OK);
1094
1095 check_assert(tskpri == MID_PRIORITY);
1096
1097 check_point(59);
1098 ercd = unl_mtx(MTX4);
1099 check_ercd(ercd, E_OK);
1100
1101 check_point(60);
1102 ercd = slp_tsk();
1103 check_ercd(ercd, E_OK);
1104
1105 check_point(68);
1106 ercd = loc_mtx(MTX4);
1107 check_ercd(ercd, E_OK);
1108
1109 check_point(69);
1110 ercd = slp_tsk();
1111 check_ercd(ercd, E_OK);
1112
1113 check_point(78);
1114 ercd = ini_mtx(MTX3);
1115 check_ercd(ercd, E_OK);
1116
1117 ercd = get_pri(TASK1, &tskpri);
1118 check_ercd(ercd, E_OK);
1119
1120 check_assert(tskpri == MID_PRIORITY);
1121
1122 check_point(79);
1123 ercd = unl_mtx(MTX4);
1124 check_ercd(ercd, E_OK);
1125
1126 check_point(80);
1127 ercd = slp_tsk();
1128 check_ercd(ercd, E_OK);
1129
1130 check_point(93);
1131 ercd = wup_tsk(TASK4);
1132 check_ercd(ercd, E_OK);
1133
1134 check_point(94);
1135 ercd = ini_mtx(MTX1);
1136 check_ercd(ercd, E_OK);
1137
1138 check_point(95);
1139 ercd = ext_tsk();
1140
1141 check_point(0);
1142}
Note: See TracBrowser for help on using the repository browser.