source: asp_ewarm/asp-1.7.0/test/perf4.c@ 61

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

ASP for EWARM のコミット.

File size: 5.0 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2006-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: perf4.c 1575 2009-05-31 14:15:46Z ertl-hiro $
42 */
43
44/*
45 * ƒJ[ƒlƒ‹«”\•]‰¿ƒvƒƒOƒ‰ƒ€(4)
46 *
47 * act_tskCiact_tsk‚̏ˆ—ŽžŠÔ‚ƃ^ƒXƒNØŠ·‚¦ŽžŠÔ‚ðŒv‘ª‚·‚邽‚߂̃vƒƒO
48 * ƒ‰ƒ€DˆÈ‰º‚Ì3‚‚̎žŠÔ‚𑪒肷‚éD
49 *
50 * (1) ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚³‚È‚¢act_tsk‚̏ˆ—ŽžŠÔDŽ©ƒ^ƒXƒN‚æ‚è‚à—Dæ“x
51 * ‚Ì’á‚¢ƒ^ƒXƒN‚ɑ΂µ‚Äact_tsk‚𔭍s‚µC‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô
52 * ‚É‘JˆÚ‚³‚¹‚鏈—‚ÌŽžŠÔD
53 *
54 * (2) ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚·act_tsk‚̏ˆ—ŽžŠÔDŽ©ƒ^ƒXƒN‚æ‚è‚à—Dæ“x‚̍‚
55 * ‚¢ƒ^ƒXƒN‚ɑ΂µ‚Äact_tsk‚𔭍s‚µC‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚É‘J
56 * ˆÚ‚³‚¹Cƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚µ‚āC‚‚¢—Dæ“x‚̃^ƒXƒN‚ÌŽÀs‚ªŽn‚Ü
57 * ‚é‚Ü‚Å‚ÌŽžŠÔD
58 *
59 * (3) ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚·iact_tsk‚̏ˆ—ŽžŠÔDŽüŠúƒnƒ“ƒhƒ‰‚©‚çCŽÀs
60 * ó‘Ԃ̃^ƒXƒN‚æ‚è‚à‚‚¢—Dæ“x‚̃^ƒXƒN‚ɑ΂µ‚Äact_tsk‚𔭍s‚µC‹x
61 * Ž~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘Ô‚É‘JˆÚ‚³‚¹‚½‚ ‚Æ‚ÉŽüŠúƒnƒ“ƒhƒ‰‚©‚烊ƒ^[
62 * ƒ“‚µCƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚µ‚āC‚‚¢—Dæ“x‚̃^ƒXƒN‚ÌŽÀs‚ªŽn‚Ü‚é
63 * ‚Ü‚Å‚ÌŽžŠÔD
64 */
65
66#include <kernel.h>
67#include <t_syslog.h>
68#include <test_lib.h>
69#include <histogram.h>
70#include "kernel_cfg.h"
71#include "perf4.h"
72
73/*
74 * Œv‘ª‰ñ”‚ÆŽÀsŽžŠÔ•ª•z‚ð‹L˜^‚·‚éÅ‘厞ŠÔ
75 */
76#define NO_MEASURE 10000U /* Œv‘ª‰ñ” */
77#define MAX_TIME 1000U /* ŽÀsŽžŠÔ•ª•z‚ð‹L˜^‚·‚éÅ‘厞ŠÔ */
78
79/*
80 * ŽÀsŽžŠÔ•ª•z‚ð‹L˜^‚·‚郁ƒ‚ƒŠ—̈æ
81 */
82static uint_t histarea1[MAX_TIME + 1];
83static uint_t histarea2[MAX_TIME + 1];
84static uint_t histarea3[MAX_TIME + 1];
85
86/*
87 * Œv‘ªƒ^ƒXƒN1i‚—Dæ“xj
88 */
89void task1(intptr_t exinf)
90{
91 end_measure(2);
92 ext_tsk();
93}
94
95/*
96 * Œv‘ªƒ^ƒXƒN2‚ƃƒCƒ“ƒ^ƒXƒN‚Ì‹¤—L•Ï”
97 */
98volatile uint_t task2_count;
99
100/*
101 * Œv‘ªƒ^ƒXƒN2i‚—Dæ“xj
102 */
103void task2(intptr_t exinf)
104{
105 end_measure(3);
106 task2_count++;
107 ext_tsk();
108}
109
110/*
111 * Œv‘ªƒ^ƒXƒN3i’á—Dæ“xj
112 */
113void task3(intptr_t exinf)
114{
115 ext_tsk();
116}
117
118/*
119 * Œv‘ªƒ^ƒXƒN4iÅ’á—Dæ“xj
120 */
121void task4(intptr_t exinf)
122{
123 while (true) {
124 wup_tsk(MAIN_TASK);
125 }
126}
127
128/*
129 * ŽüŠúƒnƒ“ƒhƒ‰
130 */
131void cyclic_handler(intptr_t exinf)
132{
133 begin_measure(3);
134 iact_tsk(TASK2);
135}
136
137/*
138 * ƒƒCƒ“ƒ^ƒXƒNi’†—Dæ“xj
139 */
140void main_task(intptr_t exinf)
141{
142 uint_t i;
143
144 syslog_0(LOG_NOTICE, "Performance evaluation program (4)");
145 init_hist(1, MAX_TIME, histarea1);
146 init_hist(2, MAX_TIME, histarea2);
147 init_hist(3, MAX_TIME, histarea3);
148 syslog_flush();
149
150 /*
151 * ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚³‚È‚¢act_tsk‚̏ˆ—ŽžŠÔ‚Ì‘ª’è
152 */
153 for (i = 0; i < NO_MEASURE; i++) {
154 begin_measure(1);
155 act_tsk(TASK3);
156 end_measure(1);
157 slp_tsk();
158 }
159
160 /*
161 * ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚·act_tsk‚̏ˆ—ŽžŠÔ‚Ì‘ª’è
162 */
163 for (i = 0; i < NO_MEASURE; i++) {
164 begin_measure(2);
165 act_tsk(TASK1);
166 }
167
168 /*
169 * ƒ^ƒXƒNØŠ·‚¦‚ð‹N‚±‚·iact_tsk‚̏ˆ—ŽžŠÔ‚Ì‘ª’èi‘ª’è‰ñ”‚Í10•ª‚Ì1j
170 */
171 task2_count = 0;
172 sta_cyc(CYC1);
173 while (task2_count < NO_MEASURE / 10) ;
174 stp_cyc(CYC1);
175
176 syslog_0(LOG_NOTICE, "Execution times of act_tsk without task switch");
177 print_hist(1);
178 syslog_0(LOG_NOTICE, "Execution times of act_tsk with task switch");
179 print_hist(2);
180 syslog_0(LOG_NOTICE, "Execution times of iact_tsk with task switch");
181 print_hist(3);
182 test_finish();
183}
Note: See TracBrowser for help on using the repository browser.