source: test/test_sysstat1.c @ 7

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 5.8 KB
 
1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2006-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 *      == TASK1¡ÊÍ¥ÀèÅÙ¡§10¡Ë==
46 *      1:      œéŽüŸõÂրΥÁ¥§¥Ã¥¯
47 *      2:      loc_cpu() ... ¥·¥¹¥Æ¥àŸõÂÖ€ò¥é¥ó¥À¥à€ËÊѲœ€µ€»€ë
48 *              chg_ipm(TMAX_INTPRI) -> E_CTX
49 *      3:      unl_cpu()
50 *      4:      chg_ipm(TMAX_INTPRI)
51 *      5:      dis_dsp()
52 *      6:      ena_tex()
53 *      7:      chg_ipm(TIPM_ENAALL)
54 *      8:      ena_dsp()
55 *      9:      dis_tex()
56 *      10:     dis_dsp() ... ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€òžÆ€ÓœÐ€¹œàÈ÷
57 *              ena_tex()
58 *      11:     ras_tex(TSK_SELF, 0x0001)
59 *      == TASK1¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó¡Ê1²óÌÜ¡Ë==
60 *      12:     œéŽüŸõÂրΥÁ¥§¥Ã¥¯
61 *      13:     ena_dsp() ... 3€Ä€ÎŸõÂÖ€òÊѲœ€µ€»¡€¥ê¥¿¡Œ¥ó€Çžµ€Ë€â€É€ë€«ÄŽ€Ù€ë
62 *              chg_ipm(TMIN_INTPRI)
63 *              ena_tex()
64 *              ¥ê¥¿¡Œ¥ó
65 *      == TASK1¡Ê³€­¡Ë==
66 *      14:     Ìá€Ã€Æ€­€¿ŸõÂրΥÁ¥§¥Ã¥¯
67 *      15:     loc_cpu() ... CPU¥í¥Ã¥¯ŸõÂր΀ހޥ¿¥¹¥¯€òœªÎ»€µ€»€ë
68 *      16:     ¥ê¥¿¡Œ¥ó¡Ê¡á¥¿¥¹¥¯œªÎ»¡Ë
69 *      == TASK2¡ÊÍ¥ÀèÅÙ¡§10¡Ë  ==
70 *      17:     œéŽüŸõÂրΥÁ¥§¥Ã¥¯
71 *      18:     œªÎ»
72 */
73
74#include <kernel.h>
75#include <test_lib.h>
76#include <t_syslog.h>
77#include "kernel_cfg.h"
78#include "test_sysstat1.h"
79
80void
81tex_task1(TEXPTN texptn, intptr_t exinf)
82{
83        ER              ercd;
84
85        switch (texptn) {
86        case 0x0001:
87                check_point(12);
88                check_state(false, false, TIPM_ENAALL, true, true, true);
89
90                /*
91                 *  ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä¡€³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Êѹ¹¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä
92                 */
93                check_point(13);
94                ercd = ena_dsp();
95                check_ercd(ercd, E_OK);
96                ercd = chg_ipm(TMIN_INTPRI);
97                check_ercd(ercd, E_OK);
98                ercd = ena_tex();
99                check_ercd(ercd, E_OK);
100                check_state(false, false, TMIN_INTPRI, false, true, false);
101                break;
102
103        default:
104                check_point(0);
105                break;
106        }
107}
108
109void
110task1(intptr_t exinf)
111{
112        ER              ercd;
113
114        test_start(__FILE__);
115
116        /*
117         *  œéŽüŸõÂրΥÁ¥§¥Ã¥¯
118         */
119        check_point(1);
120        check_state(false, false, TIPM_ENAALL, false, false, true);
121
122        /*
123         *  CPU¥í¥Ã¥¯ŸõÂրΥÁ¥§¥Ã¥¯
124         */
125        check_point(2);
126        ercd = loc_cpu();
127        check_ercd(ercd, E_OK);
128        check_state(false, true, TIPM_ENAALL, false, true, true);
129
130        /*
131         *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Êѹ¹€Î¥Á¥§¥Ã¥¯
132         */
133        ercd = chg_ipm(TMAX_INTPRI);
134        check_ercd(ercd, E_CTX);
135        check_state(false, true, TIPM_ENAALL, false, true, true);
136
137        /*
138         *  CPU¥í¥Ã¥¯²òœü€Î¥Á¥§¥Ã¥¯
139         */
140        check_point(3);
141        ercd = unl_cpu();
142        check_ercd(ercd, E_OK);
143        check_state(false, false, TIPM_ENAALL, false, false, true);
144
145        /*
146         *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Êѹ¹€Î¥Á¥§¥Ã¥¯
147         */
148        check_point(4);
149        ercd = chg_ipm(TMAX_INTPRI);
150        check_ercd(ercd, E_OK);
151        check_state(false, false, TMAX_INTPRI, false, true, true);
152
153        /*
154         *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß€Î¥Á¥§¥Ã¥¯
155         */
156        check_point(5);
157        ercd = dis_dsp();
158        check_ercd(ercd, E_OK);
159        check_state(false, false, TMAX_INTPRI, true, true, true);
160
161        /*
162         *  ¥¿¥¹¥¯Îã³°œèÍýµö²Ä€Î¥Á¥§¥Ã¥¯
163         */
164        check_point(6);
165        ercd = ena_tex();
166        check_ercd(ercd, E_OK);
167        check_state(false, false, TMAX_INTPRI, true, true, false);
168
169        /*
170         *  ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœü€Î¥Á¥§¥Ã¥¯
171         */
172        check_point(7);
173        ercd = chg_ipm(TIPM_ENAALL);
174        check_ercd(ercd, E_OK);
175        check_state(false, false, TIPM_ENAALL, true, true, false);
176
177        /*
178         *  ¥Ç¥£¥¹¥Ñ¥Ã¥Áµö²Ä€Î¥Á¥§¥Ã¥¯
179         */
180        check_point(8);
181        ercd = ena_dsp();
182        check_ercd(ercd, E_OK);
183        check_state(false, false, TIPM_ENAALL, false, false, false);
184
185        /*
186         *  ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ß€Î¥Á¥§¥Ã¥¯
187         */
188        check_point(9);
189        ercd = dis_tex();
190        check_ercd(ercd, E_OK);
191        check_state(false, false, TIPM_ENAALL, false, false, true);
192
193        /*
194         *  ¥Ç¥£¥¹¥Ñ¥Ã¥Á¶Ø»ß¡€¥¿¥¹¥¯Îã³°œèÍýµö²Ä
195         */
196        check_point(10);
197        ercd = dis_dsp();
198        check_ercd(ercd, E_OK);
199        ercd = ena_tex();
200        check_ercd(ercd, E_OK);
201        check_state(false, false, TIPM_ENAALL, true, true, false);
202
203        /*
204         *  ¥¿¥¹¥¯Îã³°œèÍý€òÍ×µá
205         */
206        check_point(11);
207        ercd = ras_tex(TSK_SELF, 0x0001);
208        /* €³€³€Ç¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€¬Æ°ºî€¹€ë */
209        check_ercd(ercd, E_OK);
210
211        /*
212         *  ¥¿¥¹¥¯Îã³°œèÍý€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€êžµ€ÎŸõÂÖ€ËÌá€Ã€Æ€€€ë€³€È€ò
213         *  ¥Á¥§¥Ã¥¯
214         */
215        check_point(14);
216        check_state(false, false, TIPM_ENAALL, true, true, false);
217
218        /*
219         *  CPU¥í¥Ã¥¯ŸõÂÖ€Ë
220         */
221        check_point(15);
222        ercd = loc_cpu();
223        check_ercd(ercd, E_OK);
224
225        /*
226         *  €œ€Î€Þ€Þ¥¿¥¹¥¯œªÎ»
227         */
228        check_point(16);
229}
230
231void
232task2(intptr_t exinf)
233{
234        /*
235         *  œéŽüŸõÂրΥÁ¥§¥Ã¥¯
236         */
237        check_point(17);
238        check_state(false, false, TIPM_ENAALL, false, false, true);
239
240        check_finish(18);
241}
詳しい使い方は TracBrowser を参照してください。