source: mypx/test/test_task1.c

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 8.5 KB
Rev 
[7]1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2007-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 *  make_runnable€Èmake_non_runnable€òÌÖÍåŪ€Ë¥Æ¥¹¥È€¹€ë¡¥
46 *
47 * ¡Ú¥Æ¥¹¥È¹àÌÜ¡Û
48 *
49 *      (A) ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€è€ê€â¹â€€Í¥ÀèÅـΥ¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
50 *              (A-1) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǀπʀ€Ÿì¹ç
51 *              (A-2) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրΟì¹ç
52 *      (B) ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€ÈƱ€žÍ¥ÀèÅـΥ¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
53 *              ¡ªÆ±€žÍ¥ÀèÅـΥ¿¥¹¥¯€ÎÃæ€ÎËöÈø€ËÆþ€ë€³€È€ò³Îǧ€¹€ë
54 *      (C) ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€è€ê€âÄ ͥÀèÅـΥ¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
55 *              ¡ªÆ±€žÍ¥ÀèÅـΥ¿¥¹¥¯€ÎÃæ€ÎËöÈø€ËÆþ€ë€³€È€ò³Îǧ€¹€ë
56 *      (D) ŒÂ¹Ô€Ç€­€ëŸõÂրΥ¿¥¹¥¯€¬€Ê€€ŸõÂրǡ€¥¿¥¹¥¯€òŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
57 *              ¡ª€³€ÎŸì¹ç€Ï¡€¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǀπʀ€
58 *      (E) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǡ€ŒÂ¹ÔŸõÂրˀʀë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
59 *              ¥¯€è€ê€â¹â€€Í¥ÀèÅـΥ¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
60 *      (F) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǡ€ŒÂ¹ÔŸõÂրˀʀë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
61 *              ¥¯€ÈƱ€žÍ¥ÀèÅـΥ¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
62 *      (G) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǡ€ŒÂ¹ÔŸõÂրˀʀë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂÖ¥¿¥¹
63 *              ¥¯€è€ê€âÄ ͥÀèÅـΥ¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրˀ¹€ë
64 *      (H) ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրǀʀ¯€¹
65 *              (H-1) ŒÂ¹Ô€Ç€­€ëŸõÂրΥ¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
66 *              (H-2) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
67 *              (H-3) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
68 *      (I) ŒÂ¹Ô²ÄÇœŸõÂրΥ¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրǀʀ¯€¹
69 *              (I-1) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
70 *              (I-2) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
71 *      (J) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǡ€ŒÂ¹ÔŸõÂրˀʀë€Ù€­€À€¬ŒÂ¹Ô²ÄÇœŸõÂրȀʀÃ
72 *              €Æ€€€ë¥¿¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրǀʀ¯€¹
73 *              (J-1) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€ëŸì¹ç
74 *              (J-2) Ʊ°ìÍ¥ÀèÅـΥ¿¥¹¥¯€¬€Ê€¯€Ê€é€Ê€€Ÿì¹ç
75 *      (K) ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǡ€ŒÂ¹Ô²ÄÇœŸõÂրˀʀë€Ù€­€À€¬ŒÂ¹ÔŸõÂրΥ¿
76 *              ¥¹¥¯€ò¡€ŒÂ¹Ô€Ç€­€ëŸõÂրǀʀ¯€¹
77 *              ¡ª¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝα€Ç€Ï¡€ŒÂ¹ÔŸõÂրΥ¿¥¹¥¯€¬ŒÂ¹Ô€Ç€­€ëŸõÂրǀʀ¯
78 *              €Ê€ë€è€Š€ÊÁ«°Ü€òµ¯€³€¹€³€È€¬€Ç€­€Ê€€€¿€á¡€€³€ÎŸõ¶·€Ïµ¯€³€é€Ê€€¡¥
79 *
80 * ¡Ú»ÈÍѥ꥜¡Œ¥¹¡Û
81 *
82 *      TASK1: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯¡€¥á¥€¥ó¥¿¥¹¥¯¡€ºÇœé€«€éµ¯Æ°
83 *      TASK2: ¹âÍ¥ÀèÅÙ¥¿¥¹¥¯
84 *      TASK3: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
85 *      TASK4: ÃæÍ¥ÀèÅÙ¥¿¥¹¥¯
86 *      TASK5: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
87 *      TASK6: ÄãÍ¥ÀèÅÙ¥¿¥¹¥¯
88 *      ALM1:  ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é
89 *
90 * ¡Ú¥Æ¥¹¥È¥·¡Œ¥±¥ó¥¹¡Û
91 *
92 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
93 *      1:      act_tsk(TASK2)                                  ... (A-1)
94 *      == TASK2¡ÊÍ¥ÀèÅÙ¡§¹â¡Ë==
95 *      2:      slp_tsk()                                               ... (H-2)
96 *      == TASK1¡Ê³€­¡Ë==
97 *      3:      act_tsk(TASK3)                                  ... (B)
98 *      4:      act_tsk(TASK4)                                  ... (B)
99 *      5:      slp_tsk()                                               ... (H-3)
100 *      == TASK3¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
101 *      6:      slp_tsk()                                               ... (H-3)
102 *      == TASK4¡ÊÍ¥ÀèÅÙ¡§Ãæ¡Ë==
103 *      7:      wup_tsk(TASK1)
104 *      8:      slp_tsk()                                               ... (H-3)
105 *      == TASK1¡Ê³€­¡Ë==
106 *      9:      act_tsk(TASK5)                                  ... (C)
107 *      10:     act_tsk(TASK6)                                  ... (C)
108 *      11:     sus_tsk(TASK6)                                  ... (I-2)
109 *      12:     sus_tsk(TASK5)                                  ... (I-1)
110 *      13:     rsm_tsk(TASK5)                                  ... (C)
111 *      14:     rsm_tsk(TASK6)                                  ... (C)
112 *      15:     slp_tsk()                                               ... (H-2)
113 *      == TASK5¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
114 *      16:     slp_tsk()                                               ... (H-3)
115 *      == TASK6¡ÊÍ¥ÀèÅÙ¡§Äã¡Ë==
116 *      17:     dis_dsp()
117 *      18:     wup_tsk(TASK1)                                  ... (A-2)
118 *      19:     wup_tsk(TASK2)                                  ... (E)
119 *      20:     sus_tsk(TASK2)                                  ... (J-1)
120 *      21:     wup_tsk(TASK3)                                  ... (F)
121 *      22:     wup_tsk(TASK4)                                  ... (F)
122 *      23:     sus_tsk(TASK1)                                  ... (J-2)
123 *      24:     ena_dsp()
124 *      == TASK3¡Ê³€­¡Ë==
125 *      25:     slp_tsk()                                               ... (H-3)
126 *      == TASK4¡Ê³€­¡Ë==
127 *      26:     slp_tsk()                                               ... (H-2)
128 *      == TASK6¡Ê³€­¡Ë==
129 *      27:     dis_dsp()
130 *      28:     rsm_tsk(TASK1)                                  ... (A-2)
131 *      29:     wup_tsk(TASK5)                                  ... (G)
132 *      30:     ena_dsp()
133 *      == TASK1¡Ê³€­¡Ë==
134 *      31:     slp_tsk()                                               ... (H-2)
135 *      == TASK6¡Ê³€­¡Ë==
136 *      32:     slp_tsk()                                               ... (H-3)
137 *      == TASK5¡Ê³€­¡Ë==
138 *      33:     sta_alm(ALM1, 10)
139 *      34:     slp_tsk()                                               ... (H-1)
140 *      == ALM1 ==
141 *      35:     iget_tid(&tskid)
142 *              assert(tskid == TSK_NONE)
143 *      36:     iwup_tsk(TASK1)                                 ... (D)
144 *      37:     RETURN
145 *      == TASK1¡Ê³€­¡Ë==
146 *      38: END
147 */
148
149#include <kernel.h>
150#include <test_lib.h>
151#include <t_syslog.h>
152#include "kernel_cfg.h"
153#include "test_task1.h"
154
155/* DO NOT DELETE THIS LINE -- gentest depends on it. */
156
157void
158alarm1_handler(intptr_t exinf)
159{
160        ID              tskid;
161        ER_UINT ercd;
162
163        check_point(35);
164        ercd = iget_tid(&tskid);
165        check_ercd(ercd, E_OK);
166
167        check_assert(tskid == TSK_NONE);
168
169        check_point(36);
170        ercd = iwup_tsk(TASK1);
171        check_ercd(ercd, E_OK);
172
173        check_point(37);
174        return;
175
176        check_point(0);
177}
178
179void
180task1(intptr_t exinf)
181{
182        ER_UINT ercd;
183
184        test_start(__FILE__);
185
186        check_point(1);
187        ercd = act_tsk(TASK2);
188        check_ercd(ercd, E_OK);
189
190        check_point(3);
191        ercd = act_tsk(TASK3);
192        check_ercd(ercd, E_OK);
193
194        check_point(4);
195        ercd = act_tsk(TASK4);
196        check_ercd(ercd, E_OK);
197
198        check_point(5);
199        ercd = slp_tsk();
200        check_ercd(ercd, E_OK);
201
202        check_point(9);
203        ercd = act_tsk(TASK5);
204        check_ercd(ercd, E_OK);
205
206        check_point(10);
207        ercd = act_tsk(TASK6);
208        check_ercd(ercd, E_OK);
209
210        check_point(11);
211        ercd = sus_tsk(TASK6);
212        check_ercd(ercd, E_OK);
213
214        check_point(12);
215        ercd = sus_tsk(TASK5);
216        check_ercd(ercd, E_OK);
217
218        check_point(13);
219        ercd = rsm_tsk(TASK5);
220        check_ercd(ercd, E_OK);
221
222        check_point(14);
223        ercd = rsm_tsk(TASK6);
224        check_ercd(ercd, E_OK);
225
226        check_point(15);
227        ercd = slp_tsk();
228        check_ercd(ercd, E_OK);
229
230        check_point(31);
231        ercd = slp_tsk();
232        check_ercd(ercd, E_OK);
233
234        check_finish(38);
235        check_point(0);
236}
237
238void
239task2(intptr_t exinf)
240{
241        ER_UINT ercd;
242
243        check_point(2);
244        ercd = slp_tsk();
245        check_ercd(ercd, E_OK);
246
247        check_point(0);
248}
249
250void
251task3(intptr_t exinf)
252{
253        ER_UINT ercd;
254
255        check_point(6);
256        ercd = slp_tsk();
257        check_ercd(ercd, E_OK);
258
259        check_point(25);
260        ercd = slp_tsk();
261        check_ercd(ercd, E_OK);
262
263        check_point(0);
264}
265
266void
267task4(intptr_t exinf)
268{
269        ER_UINT ercd;
270
271        check_point(7);
272        ercd = wup_tsk(TASK1);
273        check_ercd(ercd, E_OK);
274
275        check_point(8);
276        ercd = slp_tsk();
277        check_ercd(ercd, E_OK);
278
279        check_point(26);
280        ercd = slp_tsk();
281        check_ercd(ercd, E_OK);
282
283        check_point(0);
284}
285
286void
287task5(intptr_t exinf)
288{
289        ER_UINT ercd;
290
291        check_point(16);
292        ercd = slp_tsk();
293        check_ercd(ercd, E_OK);
294
295        check_point(33);
296        ercd = sta_alm(ALM1, 10);
297        check_ercd(ercd, E_OK);
298
299        check_point(34);
300        ercd = slp_tsk();
301        check_ercd(ercd, E_OK);
302
303        check_point(0);
304}
305
306void
307task6(intptr_t exinf)
308{
309        ER_UINT ercd;
310
311        check_point(17);
312        ercd = dis_dsp();
313        check_ercd(ercd, E_OK);
314
315        check_point(18);
316        ercd = wup_tsk(TASK1);
317        check_ercd(ercd, E_OK);
318
319        check_point(19);
320        ercd = wup_tsk(TASK2);
321        check_ercd(ercd, E_OK);
322
323        check_point(20);
324        ercd = sus_tsk(TASK2);
325        check_ercd(ercd, E_OK);
326
327        check_point(21);
328        ercd = wup_tsk(TASK3);
329        check_ercd(ercd, E_OK);
330
331        check_point(22);
332        ercd = wup_tsk(TASK4);
333        check_ercd(ercd, E_OK);
334
335        check_point(23);
336        ercd = sus_tsk(TASK1);
337        check_ercd(ercd, E_OK);
338
339        check_point(24);
340        ercd = ena_dsp();
341        check_ercd(ercd, E_OK);
342
343        check_point(27);
344        ercd = dis_dsp();
345        check_ercd(ercd, E_OK);
346
347        check_point(28);
348        ercd = rsm_tsk(TASK1);
349        check_ercd(ercd, E_OK);
350
351        check_point(29);
352        ercd = wup_tsk(TASK5);
353        check_ercd(ercd, E_OK);
354
355        check_point(30);
356        ercd = ena_dsp();
357        check_ercd(ercd, E_OK);
358
359        check_point(32);
360        ercd = slp_tsk();
361        check_ercd(ercd, E_OK);
362
363        check_point(0);
364}
詳しい使い方は TracBrowser を参照してください。