source: anotherchoice/tags/jsp-1.4.4-full-UTF8/include/t_syslog.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 12 years ago

initial

File size: 9.8 KB
RevLine 
[26]1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13 * によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18 * 利用と呼ぶ)することを無償で許諾する.
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * スコード中に含まれていること.
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26 * 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32 * と.
33 * (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40 * 報告すること.
41 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42 * 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51 *
52 * @(#) $Id: t_syslog.h,v 1.4 2004/01/05 05:15:01 hiro Exp $
53 */
54
55/*
56 * システムログ機能
57 *
58 * システムログサービスは,システムのログ情
59報を出力するためのサービス
60 * である.カーネルからのログ情
61報の出力にも用いるため,内
62部で待
63ち状æ…
64‹
65 * にはいることはない.
66 *
67 * ログ情
68報は,カーネル内
69のログバッファに書き込むか,低レベルの文字出
70 * 力関数を用いて出力する.どちらを使うかは,拡張サービスコールで切り
71 * 換えることができる.
72 *
73 * ログバッファ領域がオーバフローした場合には,古いログ情
74報を消して上
75 * 書きする.
76 *
77 * アセンブリ言語のソースファイルやシステムコンフィギュレーションファ
78 * イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して
79 * おくことで,マクロ定義以外の記述を除くことができる.
80 *
81 * このインクルードファイルは,kernel.h と sil.h でインクルードされる.
82 * 他のファイルから直接インクルードされることはない.
83 *
84 * このファイルをインクルードする前に,t_stddef.h と itron.h をインク
85 * ルードしておくことが必
86要である.
87 */
88
89#ifndef _T_SYSLOG_H_
90#define _T_SYSLOG_H_
91
92/*
93 * ログ情
94報の種別の定義
95 *
96 * LOG_TYPE_CYC,LOG_TYPE_ASSERT 以外は,デバッギングインタフェース仕
97 * 様と合致している.
98 */
99#define LOG_TYPE_INH 0x01u /* 割込みハンドラ */
100#define LOG_TYPE_ISR 0x02u /* 割込みサービスルーチン */
101#define LOG_TYPE_CYC 0x03u /* 周期ハンドラ */
102#define LOG_TYPE_EXC 0x04u /* CPU例外ハンドラ */
103#define LOG_TYPE_TEX 0x05u /* タスク例外処理ルーチン */
104#define LOG_TYPE_TSKSTAT 0x06u /* タスク状æ…
105‹å¤‰åŒ– */
106#define LOG_TYPE_DSP 0x07u /* ディスパッチャ */
107#define LOG_TYPE_SVC 0x08u /* サービスコール */
108#define LOG_TYPE_COMMENT 0x09u /* コメント */
109#define LOG_TYPE_ASSERT 0x0au /* アサーションの失敗 */
110
111#define LOG_ENTER 0x00u /* å…
112¥å£ï¼é–‹å§‹ */
113#define LOG_LEAVE 0x80u /* 出口/終了 */
114
115/*
116 * ログ情
117報の重要度の定義
118 */
119#define LOG_EMERG 0u /* シャットダウンに値するエラー */
120#define LOG_ALERT 1u
121#define LOG_CRIT 2u
122#define LOG_ERROR 3u /* システムエラー */
123#define LOG_WARNING 4u /* 警告メッセージ */
124#define LOG_NOTICE 5u
125#define LOG_INFO 6u
126#define LOG_DEBUG 7u /* デバッグ用メッセージ */
127
128#ifndef _MACRO_ONLY
129
130/*
131 * ログ情
132報のデータ構造
133 */
134
135#define TMAX_LOGINFO 6
136
137typedef struct {
138 UINT logtype; /* ログ情
139報の種別 */
140 SYSTIM logtim; /* ログ時刻 */
141 VP_INT loginfo[TMAX_LOGINFO]; /* その他のログ情
142å ± */
143 } SYSLOG;
144
145/*
146 * ログ情
147報の重要度のビットマップを作るためのマクロ
148 */
149#define LOG_MASK(prio) (1u << (prio))
150#define LOG_UPTO(prio) ((1u << ((prio) + 1)) - 1)
151
152#ifndef OMIT_SYSLOG
153
154/*
155 * ログ情
156報の出力
157 */
158extern ER vwri_log(UINT prio, SYSLOG *p_log) throw();
159
160/*
161 * ログバッファからのログ情
162報の読出し
163 */
164extern ER_UINT vrea_log(SYSLOG *p_log) throw();
165
166/*
167 * 出力すべきログ情
168報の重要度の設定
169 */
170extern ER vmsk_log(UINT logmask, UINT lowmask) throw();
171
172/*
173 * ログ情
174報を出力するためのライブラリ関数
175 */
176
177Inline ER
178_syslog_0(UINT prio, UINT type)
179{
180 SYSLOG log;
181
182 log.logtype = type;
183 return(vwri_log(prio, &log));
184}
185
186Inline ER
187_syslog_1(UINT prio, UINT type, VP_INT arg1)
188{
189 SYSLOG log;
190
191 log.logtype = type;
192 log.loginfo[0] = arg1;
193 return(vwri_log(prio, &log));
194}
195
196Inline ER
197_syslog_2(UINT prio, UINT type, VP_INT arg1, VP_INT arg2)
198{
199 SYSLOG log;
200
201 log.logtype = type;
202 log.loginfo[0] = arg1;
203 log.loginfo[1] = arg2;
204 return(vwri_log(prio, &log));
205}
206
207Inline ER
208_syslog_3(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, VP_INT arg3)
209{
210 SYSLOG log;
211
212 log.logtype = type;
213 log.loginfo[0] = arg1;
214 log.loginfo[1] = arg2;
215 log.loginfo[2] = arg3;
216 return(vwri_log(prio, &log));
217}
218
219Inline ER
220_syslog_4(UINT prio, UINT type, VP_INT arg1, VP_INT arg2,
221 VP_INT arg3, VP_INT arg4)
222{
223 SYSLOG log;
224
225 log.logtype = type;
226 log.loginfo[0] = arg1;
227 log.loginfo[1] = arg2;
228 log.loginfo[2] = arg3;
229 log.loginfo[3] = arg4;
230 return(vwri_log(prio, &log));
231}
232
233Inline ER
234_syslog_5(UINT prio, UINT type, VP_INT arg1, VP_INT arg2,
235 VP_INT arg3, VP_INT arg4, VP_INT arg5)
236{
237 SYSLOG log;
238
239 log.logtype = type;
240 log.loginfo[0] = arg1;
241 log.loginfo[1] = arg2;
242 log.loginfo[2] = arg3;
243 log.loginfo[3] = arg4;
244 log.loginfo[4] = arg5;
245 return(vwri_log(prio, &log));
246}
247
248Inline ER
249_syslog_6(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, VP_INT arg3,
250 VP_INT arg4, VP_INT arg5, VP_INT arg6)
251{
252 SYSLOG log;
253
254 log.logtype = type;
255 log.loginfo[0] = arg1;
256 log.loginfo[1] = arg2;
257 log.loginfo[2] = arg3;
258 log.loginfo[3] = arg4;
259 log.loginfo[4] = arg5;
260 log.loginfo[5] = arg6;
261 return(vwri_log(prio, &log));
262}
263
264#else /* OMIT_SYSLOG */
265
266#define vwri_log(prio, p_log) E_OK
267#define vrea_log(p_log) E_OK
268#define vmsk_log(logmask, lowmask) E_OK
269
270#define _syslog_0(prio, type) E_OK
271#define _syslog_1(prio, type, arg1) E_OK
272#define _syslog_2(prio, type, arg1, arg2) E_OK
273#define _syslog_3(prio, type, arg1, arg2, arg3) E_OK
274#define _syslog_4(prio, type, arg1, arg2, arg3, arg4) E_OK
275#define _syslog_5(prio, type, arg1, arg2, arg3, arg4, arg5) E_OK
276#define _syslog_6(prio, type, arg1, arg2, arg3, arg4, arg5, arg6) E_OK
277
278#endif /* OMIT_SYSLOG */
279
280/*
281 * ログ情
282報(コメント)を出力するためのマクロ
283 *
284 * format および後続の引数から作成したメッセージを,重大度 prio で
285 * ログ情
286報として出力するためのマクロ.arg1〜argn は VP_INT型にキャ
287 * ストするため,VP_INT型に型変換できる任意の型でよい.
288 */
289
290#define syslog_0(prio, format) \
291 _syslog_1(prio, LOG_TYPE_COMMENT, (VP_INT) format)
292
293#define syslog_1(prio, format, arg1) \
294 _syslog_2(prio, LOG_TYPE_COMMENT, (VP_INT) format, \
295 (VP_INT)(arg1))
296
297#define syslog_2(prio, format, arg1, arg2) \
298 _syslog_3(prio, LOG_TYPE_COMMENT, (VP_INT) format, \
299 (VP_INT)(arg1), (VP_INT)(arg2))
300
301#define syslog_3(prio, format, arg1, arg2, arg3) \
302 _syslog_4(prio, LOG_TYPE_COMMENT, (VP_INT) format, \
303 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3))
304
305#define syslog_4(prio, format, arg1, arg2, arg3, arg4) \
306 _syslog_5(prio, LOG_TYPE_COMMENT, (VP_INT) format, \
307 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3), \
308 (VP_INT)(arg4))
309
310#define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
311 _syslog_6(prio, LOG_TYPE_COMMENT, (VP_INT) format, \
312 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3), \
313 (VP_INT)(arg4), (VP_INT)(arg5))
314
315/*
316 * ログ情
317報(コメント)を出力するためのライブラリ関数(vasyslog.c)
318 */
319extern ER syslog(UINT prio, const char *format, ...) throw();
320
321/*
322 * ログ情
323報のフォーマット出力(log_output.c)
324 */
325extern void syslog_printf(const char *format, VP_INT *args,
326 void (*putc)(char)) throw();
327extern void syslog_print(SYSLOG *p_log, void (*putc)(char)) throw();
328extern void syslog_output(void (*putc)(char)) throw();
329
330#endif /* _MACRO_ONLY */
331#endif /* _T_SYSLOG_H_ */
Note: See TracBrowser for help on using the repository browser.