source: asp_ewarm/asp-1.7.0/library/test_lib.c

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

ASP for EWARM のコミット.

File size: 4.5 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2005-2011 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: test_lib.c 2067 2011-05-05 00:46:29Z ertl-hiro $
42 */
43
44/*
45 * ƒeƒXƒgƒvƒƒOƒ‰ƒ€—pƒ‰ƒCƒuƒ‰ƒŠ
46 */
47
48#include <kernel.h>
49#include <sil.h>
50#include <t_syslog.h>
51#include <t_stdlib.h>
52#include <log_output.h>
53#include "syssvc/syslog.h"
54#include "target_syssvc.h"
55#include "test_lib.h"
56
57/*
58 * ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
59 */
60static uint_t check_count = 0u;
61
62/*
63 * Ž©ŒÈf’fŠÖ”
64 */
65static BIT_FUNC check_bit_func = NULL;
66
67/*
68 * Ž©ŒÈf’fŠÖ”‚̐ݒè
69 */
70void
71set_bit_func(BIT_FUNC bit_func)
72{
73 check_bit_func = bit_func;
74}
75
76/*
77 * ƒVƒXƒeƒ€ƒƒO‚̏o—͏ˆ—
78 */
79void
80syslog_flush(void)
81{
82 SYSLOG syslog;
83 ER_UINT rercd;
84
85 /*
86 * ƒƒOƒoƒbƒtƒ@‚É‹L˜^‚³‚ꂽƒƒOî•ñ‚ðC’჌ƒxƒ‹o—Í‹@”\‚ð—p‚¢‚ďo
87 * —Í‚·‚éD
88 */
89 while ((rercd = syslog_rea_log(&syslog)) >= 0) {
90 if (rercd > 0) {
91 syslog_lostmsg((uint_t) rercd, target_fput_log);
92 }
93 if (syslog.logtype >= LOG_TYPE_COMMENT) {
94 syslog_print(&syslog, target_fput_log);
95 target_fput_log('\n');
96 }
97 }
98}
99
100/*
101 * ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̏I—¹
102 */
103void
104test_finish(void)
105{
106 SIL_PRE_LOC;
107
108 SIL_LOC_INT();
109 syslog_flush();
110 ext_ker();
111
112 /* ‚±‚±‚Ö—ˆ‚邱‚Æ‚Í‚È‚¢‚Í‚¸ */
113 SIL_UNL_INT();
114}
115
116/*
117 * ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
118 */
119void
120check_point(uint_t count)
121{
122 bool_t errorflag = false;
123 ER rercd;
124 SIL_PRE_LOC;
125
126 /*
127 * Š„ž‚݃ƒbƒNó‘Ô‚É
128 */
129 SIL_LOC_INT();
130
131 /*
132 * ƒV[ƒPƒ“ƒXƒ`ƒFƒbƒN
133 */
134 if (++check_count == count) {
135 syslog_1(LOG_NOTICE, "Check point %d passed.", count);
136 }
137 else {
138 syslog_1(LOG_ERROR, "## Unexpected check point %d.", count);
139 errorflag = true;
140 }
141
142 /*
143 * ƒJ[ƒlƒ‹‚Ì“à•”ó‘Ô‚ÌŒŸ¸
144 */
145 if (check_bit_func != NULL) {
146 rercd = (*check_bit_func)();
147 if (rercd < 0) {
148 syslog_2(LOG_ERROR, "## Internal inconsistency detected (%s, %d).",
149 itron_strerror(rercd), SERCD(rercd));
150 errorflag = true;
151 }
152 }
153
154 /*
155 * ƒGƒ‰[‚ªŒŸo‚³‚ꂽê‡‚́CƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ðI—¹‚·‚éD
156 */
157 if (errorflag) {
158 test_finish();
159 }
160
161 /*
162 * Š„ž‚݃ƒbƒNó‘Ô‚ð‰ðœ
163 */
164 SIL_UNL_INT();
165}
166
167/*
168 * Š®—¹ƒ`ƒFƒbƒNƒ|ƒCƒ“ƒg
169 */
170void
171check_finish(uint_t count)
172{
173 check_point(count);
174 syslog_0(LOG_NOTICE, "All check points passed.");
175 test_finish();
176}
177
178/*
179 * ðŒƒ`ƒFƒbƒN‚̃Gƒ‰[ˆ—
180 */
181void
182_check_assert(const char *expr, const char *file, int_t line)
183{
184 syslog_3(LOG_ERROR, "## Assertion `%s' failed at %s:%u.",
185 expr, file, line);
186 test_finish();
187}
188
189/*
190 * ƒGƒ‰[ƒR[ƒhƒ`ƒFƒbƒN‚̃Gƒ‰[ˆ—
191 */
192void
193_check_ercd(ER ercd, const char *file, int_t line)
194{
195 syslog_3(LOG_ERROR, "## Unexpected error %s detected at %s:%u.",
196 itron_strerror(ercd), file, line);
197 test_finish();
198}
Note: See TracBrowser for help on using the repository browser.