source: mypx/extension/rstr_task/test/test_rstr1.c

このファイルの最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 7.7 KB
 
1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2010-2013 by Embedded and Real-Time Systems Laboratory
6 *              Graduate School of Information Science, Nagoya Univ., JAPAN
7 *
8 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
9 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
10 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
11 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
12 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
13 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
14 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
15 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
16 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
17 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
18 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
19 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
20 *      €È¡¥
21 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
22 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
23 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
24 *        Êó¹ð€¹€ë€³€È¡¥
25 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
26 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
27 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
28 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
29 *      ÌÈÀÕ€¹€ë€³€È¡¥
30 *
31 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
32 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
33 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
34 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
35 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
36 *
37 *  $Id$
38 */
39
40/*
41 *              À©Ì󥿥¹¥¯€Î¥Æ¥¹¥È(1)
42 *
43 * ¡Ú¥Æ¥¹¥È€ÎÌÜŪ¡Û
44 *
45 *  À©Ì󥿥¹¥¯€ÎŽðËÜŪ€Ê¿¶Éñ€€¡Êras_pri¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë°Ê³°€Îưºî¡Ë€ò¥Æ¥¹
46 *  ¥È€¹€ë¡¥
47 *
48 * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
49 *
50 *      (A) À©Ì󥿥¹¥¯€¬¡€Œ«¥¿¥¹¥¯€òÂÔ€ÁŸõÂրˀ¹€ë²ÄÇœÀ­€Î€¢€ë¥µ¡Œ¥Ó¥¹¥³¡Œ
51 *      ¥ë€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š¥é¡Œ€È€Ê€ë
52 *              (A-1) slp_tsk
53 *              (A-2) tslp_tsk
54 *              (A-3) dly_tsk
55 *      ¢š Ÿ€Ë€â€¢€ë€¬¡€€³€ì€À€±€Ëα€á€ë
56 *      (B) À©Ì󥿥¹¥¯€òÂП݀Ȁ·€Æ¡€chg_pri¡€wup_tsk¡€iwup_tsk¡€can_wup¡€
57 *          rel_wai¡€irel_wai¡€sus_tsk¡€rsm_tsk€òžÆ€ÓœÐ€·€¿Ÿì¹ç¡€E_NOSPT¥š
58 *          ¥é¡Œ€È€Ê€ë
59 *              (B-1) chg_pri
60 *              (B-2) wup_tsk
61 *              (B-3) iwup_tsk
62 *              (B-4) can_wup
63 *              (B-5) rel_wai
64 *              (B-6) irel_wai
65 *              (B-7) sus_tsk
66 *              (B-8) rsm_tsk
67 *  (C) rot_rdq¡€irot_rdq€Ï¡€ÂПÝÍ¥ÀèÅÙ€ò»ý€ÄŒÂ¹Ô€Ç€­€ëŸõÂրΥ¿¥¹¥¯€ÎÃæ
68 *      €ÇºÇ€âÍ¥Àèœç°Ì€¬¹â€€¥¿¥¹¥¯€¬À©Ì󥿥¹¥¯€Ç€¢€ëŸì¹ç¡€E_NOSPT¥š¥é¡Œ
69 *      €È€Ê€ë
70 *              (C-1) rot_rdq€¬Àµ€·€¯Æ°ºî€¹€ë
71 *              (C-2) rot_rdq€¬E_NOSPT€òÊÖ€¹
72 *              (C-3) irot_rdq€¬Àµ€·€¯Æ°ºî€¹€ë
73 *              (C-4) irot_rdq€¬E_NOSPT€òÊÖ€¹
74 *
75 * ¡Ú»ÈÍѥ꥜¡Œ¥¹¡Û
76 *
77 *      TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
78 *      TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ì󥿥¹¥¯
79 *      TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ì󥿥¹¥¯
80 *      TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€À©Ì󥿥¹¥¯
81 *      ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
82 *
83 * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
84 *
85 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
86 *      1:      act_tsk(TASK2)
87 *      == TASK2-1¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
88 *      2:      slp_tsk() -> E_NOSPT                                            ... (A-1)
89 *      3:      tslp_tsk(10) -> E_NOSPT                                         ... (A-2)
90 *      4:      dly_tsk(10) -> E_NOSPT                                          ... (A-3)
91 *  5:  ext_tsk()
92 *      == TASK1¡Ê³€­¡Ë==
93 *      6:      chg_pri(TASK3, HIGH_PRIORITY) -> E_NOSPT        ... (B-1)
94 *      7:      wup_tsk(TASK3) -> E_NOSPT                                       ... (B-2)
95 *      8:      can_wup(TASK3) -> E_NOSPT                                       ... (B-4)
96 *      9:      rel_wai(TASK3) -> E_NOSPT                                       ... (B-5)
97 *      10:     sus_tsk(TASK3) -> E_NOSPT                                       ... (B-7)
98 *      11:     rsm_tsk(TASK3) -> E_NOSPT                                       ... (B-8)
99 *      12:     sta_alm(ALM1, 10)
100 *      13:     slp_tsk()
101 *      == ALM1 ==
102 *      14:     iwup_tsk(TASK3) -> E_NOSPT                                      ... (B-3)
103 *      15:     irel_wai(TASK3) -> E_NOSPT                                      ... (B-6)
104 *      16:     iwup_tsk(TASK1)
105 *      17:     iact_tsk(TASK3)
106 *      18:     iact_tsk(TASK4)
107 *      19:     irot_rdq(MID_PRIORITY)                                          ... (C-3)
108 *      20:     irot_rdq(MID_PRIORITY) -> E_NOSPT                       ... (C-4)
109 *      21:     RETURN
110 *      == TASK3-1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
111 *      22:     act_tsk(TASK2)
112 *      == TASK2-2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë2²ó€á ==
113 *      23:     rot_rdq(MID_PRIORITY) -> E_NOSPT                        ... (C-2)
114 *      24:     ext_tsk()
115 *      == TASK3-1¡Ê³€­¡Ë==
116 *      25:     ext_tsk()
117 *      == TASK4-1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë1²ó€á ==
118 *      26:     ext_tsk()
119 *      == TASK1¡Ê³€­¡Ë==
120 *      27:     act_tsk(TASK3)
121 *      28:     act_tsk(TASK4)
122 *      29:     act_tsk(TASK2)
123 *      == TASK2-3¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë3²ó€á ==
124 *      30:     rot_rdq(MID_PRIORITY)                                           ... (C-1)
125 *      31:     ext_tsk()
126 *      == TASK3-2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë2²ó€á ==
127 *      32:     ext_tsk()
128 *      == TASK4-2¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë2²ó€á ==
129 *      33:     ext_tsk()
130 *      == TASK1¡Ê³€­¡Ë==
131 *      34: END
132 */
133
134#include <kernel.h>
135#include <test_lib.h>
136#include <t_syslog.h>
137#include "kernel_cfg.h"
138#include "test_rstr1.h"
139
140/* DO NOT DELETE THIS LINE -- gentest depends on it. */
141
142void
143alarm1_handler(intptr_t exinf)
144{
145        ER_UINT ercd;
146
147        check_point(14);
148        ercd = iwup_tsk(TASK3);
149        check_ercd(ercd, E_NOSPT);
150
151        check_point(15);
152        ercd = irel_wai(TASK3);
153        check_ercd(ercd, E_NOSPT);
154
155        check_point(16);
156        ercd = iwup_tsk(TASK1);
157        check_ercd(ercd, E_OK);
158
159        check_point(17);
160        ercd = iact_tsk(TASK3);
161        check_ercd(ercd, E_OK);
162
163        check_point(18);
164        ercd = iact_tsk(TASK4);
165        check_ercd(ercd, E_OK);
166
167        check_point(19);
168        ercd = irot_rdq(MID_PRIORITY);
169        check_ercd(ercd, E_OK);
170
171        check_point(20);
172        ercd = irot_rdq(MID_PRIORITY);
173        check_ercd(ercd, E_NOSPT);
174
175        check_point(21);
176        return;
177
178        check_point(0);
179}
180
181void
182task1(intptr_t exinf)
183{
184        ER_UINT ercd;
185
186        test_start(__FILE__);
187
188        check_point(1);
189        ercd = act_tsk(TASK2);
190        check_ercd(ercd, E_OK);
191
192        check_point(6);
193        ercd = chg_pri(TASK3, HIGH_PRIORITY);
194        check_ercd(ercd, E_NOSPT);
195
196        check_point(7);
197        ercd = wup_tsk(TASK3);
198        check_ercd(ercd, E_NOSPT);
199
200        check_point(8);
201        ercd = can_wup(TASK3);
202        check_ercd(ercd, E_NOSPT);
203
204        check_point(9);
205        ercd = rel_wai(TASK3);
206        check_ercd(ercd, E_NOSPT);
207
208        check_point(10);
209        ercd = sus_tsk(TASK3);
210        check_ercd(ercd, E_NOSPT);
211
212        check_point(11);
213        ercd = rsm_tsk(TASK3);
214        check_ercd(ercd, E_NOSPT);
215
216        check_point(12);
217        ercd = sta_alm(ALM1, 10);
218        check_ercd(ercd, E_OK);
219
220        check_point(13);
221        ercd = slp_tsk();
222        check_ercd(ercd, E_OK);
223
224        check_point(27);
225        ercd = act_tsk(TASK3);
226        check_ercd(ercd, E_OK);
227
228        check_point(28);
229        ercd = act_tsk(TASK4);
230        check_ercd(ercd, E_OK);
231
232        check_point(29);
233        ercd = act_tsk(TASK2);
234        check_ercd(ercd, E_OK);
235
236        check_finish(34);
237        check_point(0);
238}
239
240static uint_t   task2_count = 0;
241
242void
243task2(intptr_t exinf)
244{
245        ER_UINT ercd;
246
247        switch (++task2_count) {
248        case 1:
249                check_point(2);
250                ercd = slp_tsk();
251                check_ercd(ercd, E_NOSPT);
252
253                check_point(3);
254                ercd = tslp_tsk(10);
255                check_ercd(ercd, E_NOSPT);
256
257                check_point(4);
258                ercd = dly_tsk(10);
259                check_ercd(ercd, E_NOSPT);
260
261                check_point(5);
262                ercd = ext_tsk();
263                check_ercd(ercd, E_OK);
264
265                check_point(0);
266
267        case 2:
268                check_point(23);
269                ercd = rot_rdq(MID_PRIORITY);
270                check_ercd(ercd, E_NOSPT);
271
272                check_point(24);
273                ercd = ext_tsk();
274                check_ercd(ercd, E_OK);
275
276                check_point(0);
277
278        case 3:
279                check_point(30);
280                ercd = rot_rdq(MID_PRIORITY);
281                check_ercd(ercd, E_OK);
282
283                check_point(31);
284                ercd = ext_tsk();
285                check_ercd(ercd, E_OK);
286
287                check_point(0);
288
289        default:
290                check_point(0);
291        }
292        check_point(0);
293}
294
295static uint_t   task3_count = 0;
296
297void
298task3(intptr_t exinf)
299{
300        ER_UINT ercd;
301
302        switch (++task3_count) {
303        case 1:
304                check_point(22);
305                ercd = act_tsk(TASK2);
306                check_ercd(ercd, E_OK);
307
308                check_point(25);
309                ercd = ext_tsk();
310                check_ercd(ercd, E_OK);
311
312                check_point(0);
313
314        case 2:
315                check_point(32);
316                ercd = ext_tsk();
317                check_ercd(ercd, E_OK);
318
319                check_point(0);
320
321        default:
322                check_point(0);
323        }
324        check_point(0);
325}
326
327static uint_t   task4_count = 0;
328
329void
330task4(intptr_t exinf)
331{
332        ER_UINT ercd;
333
334        switch (++task4_count) {
335        case 1:
336                check_point(26);
337                ercd = ext_tsk();
338                check_ercd(ercd, E_OK);
339
340                check_point(0);
341
342        case 2:
343                check_point(33);
344                ercd = ext_tsk();
345                check_ercd(ercd, E_OK);
346
347                check_point(0);
348
349        default:
350                check_point(0);
351        }
352        check_point(0);
353}
詳しい使い方は TracBrowser を参照してください。