source: EcnlProtoTool/trunk/asp3_dcre/syssvc/tTestService.c

Last change on this file was 429, checked in by coas-nagasima, 4 years ago

ASP3, TINET, mbed を更新

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-csrc;charset=UTF-8
File size: 5.0 KB
Line 
1/*
2 * TOPPERS Software
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 * Copyright (C) 2016-2018 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 * テストプログラム用サービス
42 */
43
44#include "tTestService_tecsgen.h"
45#include <kernel.h>
46#include <sil.h>
47#include <t_syslog.h>
48#include <t_stdlib.h>
49
50/*
51 * テストプログラムの開始(受け口関数)
52 */
53ER
54eTestService_start(const char *progname)
55{
56 syslog_1(LOG_NOTICE, "Test program: %s", progname);
57 VAR_check_count = 0U;
58 return(E_OK);
59}
60
61/*
62 * テストプログラムの終了
63 */
64static void
65test_finish(void)
66{
67 SIL_PRE_LOC;
68
69 SIL_LOC_INT();
70 (void) cSysLog_flush();
71 (void) ext_ker();
72
73 /* ここへ来ることはないはず */
74 SIL_UNL_INT();
75}
76
77/*
78 * チェックポイント(受け口関数)
79 */
80ER
81eTestService_checkPoint(uint_t count)
82{
83 bool_t errorflag = false;
84 ER rercd;
85 SIL_PRE_LOC;
86
87 /*
88 * 割込みロック状態に
89 */
90 SIL_LOC_INT();
91
92 /*
93 * シーケンスチェック
94 */
95 if (++VAR_check_count == count) {
96 syslog_1(LOG_NOTICE, "Check point %d passed.", count);
97 }
98 else {
99 syslog_1(LOG_ERROR, "## Unexpected check point %d.\007", count);
100 errorflag = true;
101 }
102
103 /*
104 * カーネルの内部状態の検査
105 */
106 if (is_cBuiltInTest_joined()) {
107 rercd = cBuiltInTest_builtInTest();
108 if (rercd < 0) {
109 syslog_2(LOG_ERROR, "## Internal inconsistency detected (%s, %d)."
110 "\007", itron_strerror(rercd), SERCD(rercd));
111 errorflag = true;
112 }
113 }
114
115 /*
116 * エラーが検出された場合は,テストプログラムを終了する.
117 */
118 if (errorflag) {
119 test_finish();
120 }
121
122 /*
123 * 割込みロック状態を解除
124 */
125 SIL_UNL_INT();
126 return(E_OK);
127}
128
129/*
130 * 完了チェックポイント(受け口関数)
131 */
132ER
133eTestService_finishPoint(uint_t count)
134{
135 if (count > 0U) {
136 eTestService_checkPoint(count);
137 syslog_0(LOG_NOTICE, "All check points passed.");
138 }
139 test_finish();
140 return(E_OK);
141}
142
143/*
144 * 条件チェックのエラー処理(受け口関数)
145 */
146ER
147eTestService_assertError(const char *expr, const char *file, int_t line)
148{
149 syslog_3(LOG_ERROR, "## Assertion `%s' failed at %s:%u.\007",
150 expr, file, line);
151 test_finish();
152 return(E_OK);
153}
154
155/*
156 * エラーコードチェックのエラー処理(受け口関数)
157 */
158ER
159eTestService_serviceError(ER ercd, const char *file, int_t line)
160{
161 syslog_3(LOG_ERROR, "## Unexpected error %s detected at %s:%u.\007",
162 itron_strerror(ercd), file, line);
163 test_finish();
164 return(E_OK);
165}
166
167/*
168 * 割込み優先度マスクの取得(受け口関数)
169 */
170ER
171eTestService_getInterruptPriorityMask(PRI *p_ipm)
172{
173 return(get_ipm(p_ipm));
174}
Note: See TracBrowser for help on using the repository browser.