source: rtos_arduino/trunk/asp_1.9.2/include/t_syslog.h@ 136

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

ライブラリとOS及びベーシックなサンプルの追加.

File size: 10.7 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced 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-2011 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者
12は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
13 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
14 * 変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18 * スコード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再é…
21å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
22å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
23 * 者
24マニュアルなど)に,上記の著作権表示,この利用条件および下記
25 * の無保証規定を掲載すること.
26 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
27 * 用できない形で再é…
28å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
29 * と.
30 * (a) 再é…
31å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
32マニュアルなど)に,上記の著
33 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
34 * (b) 再é…
35å¸ƒã®å½¢æ…
36‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
37 * 報告すること.
38 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
39 * 害からも,上記著作権者
40およびTOPPERSプロジェクトをå…
41è²¬ã™ã‚‹ã“と.
42 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
43 * 由に基づく請求からも,上記著作権者
44およびTOPPERSプロジェクトを
45 * å…
46è²¬ã™ã‚‹ã“と.
47 *
48 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
49お
50 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
51 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
52 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
53 * の責任を負わない.
54 *
55 * @(#) $Id: t_syslog.h 2126 2011-06-26 01:07:35Z ertl-hiro $
56 */
57
58/*
59 * システムログ出力を行うための定義
60 *
61 * システムログサービスは,システムのログ情
62報を出力するためのサービス
63 * である.カーネルからのログ情
64報の出力にも用いるため,内
65部で待
66ち状æ…
67‹
68 * にはいることはない.
69 *
70 * ログ情
71報は,カーネル内
72のログバッファに書き込むか,低レベルの文字出
73 * 力関数を用いて出力する.どちらを使うかは,拡張サービスコールで切り
74 * 換えることができる.
75 *
76 * ログバッファ領域がオーバフローした場合には,古いログ情
77報を消して上
78 * 書きする.
79 *
80 * アセンブリ言語のソースファイルからこのファイルをインクルードする時
81 * は,TOPPERS_MACRO_ONLYを定義しておくことで,マクロ定義以外の記述を
82 * 除くことができる.
83 *
84 * このファイルをインクルードする前に,t_stddef.hをインクルードしてお
85 * くことが必
86要である.
87 */
88
89#ifndef TOPPERS_T_SYSLOG_H
90#define TOPPERS_T_SYSLOG_H
91
92#ifdef __cplusplus
93extern "C" {
94#endif
95
96/*
97 * ログ情
98報の種別の定義
99 */
100#define LOG_TYPE_COMMENT UINT_C(0x01) /* コメント */
101#define LOG_TYPE_ASSERT UINT_C(0x02) /* アサーションの失敗 */
102
103#define LOG_TYPE_INH UINT_C(0x11) /* 割込みハンドラ */
104#define LOG_TYPE_ISR UINT_C(0x12) /* 割込みサービスルーチン */
105#define LOG_TYPE_CYC UINT_C(0x13) /* 周期ハンドラ */
106#define LOG_TYPE_ALM UINT_C(0x14) /* アラームハンドラ */
107#define LOG_TYPE_OVR UINT_C(0x15) /* オーバランハンドラ */
108#define LOG_TYPE_EXC UINT_C(0x16) /* CPU例外ハンドラ */
109#define LOG_TYPE_TEX UINT_C(0x17) /* タスク例外処理ルーチン */
110#define LOG_TYPE_TSKSTAT UINT_C(0x18) /* タスク状æ…
111‹å¤‰åŒ– */
112#define LOG_TYPE_DSP UINT_C(0x19) /* ディスパッチャ */
113#define LOG_TYPE_SVC UINT_C(0x1a) /* サービスコール */
114
115#define LOG_ENTER UINT_C(0x00) /* å…
116¥å£ï¼é–‹å§‹ */
117#define LOG_LEAVE UINT_C(0x80) /* 出口/終了 */
118
119/*
120 * ログ情
121報の重要度の定義
122 */
123#define LOG_EMERG UINT_C(0) /* シャットダウンに値するエラー */
124#define LOG_ALERT UINT_C(1)
125#define LOG_CRIT UINT_C(2)
126#define LOG_ERROR UINT_C(3) /* システムエラー */
127#define LOG_WARNING UINT_C(4) /* 警告メッセージ */
128#define LOG_NOTICE UINT_C(5)
129#define LOG_INFO UINT_C(6)
130#define LOG_DEBUG UINT_C(7) /* デバッグ用メッセージ */
131
132#ifndef TOPPERS_MACRO_ONLY
133
134/*
135 * ログ情
136報のデータ構造
137 */
138
139#define TMAX_LOGINFO 6
140
141typedef struct {
142 uint_t logtype; /* ログ情
143報の種別 */
144 SYSTIM logtim; /* ログ時刻 */
145 intptr_t loginfo[TMAX_LOGINFO]; /* その他のログ情
146å ± */
147} SYSLOG;
148
149/*
150 * ログ情
151報の重要度のビットマップを作るためのマクロ
152 */
153#define LOG_MASK(prio) (1U << (prio))
154#define LOG_UPTO(prio) ((1U << ((prio) + 1)) - 1)
155
156/*
157 * パケット形式の定義
158 */
159typedef struct t_syslog_rlog {
160 uint_t count; /* ログバッファ中のログの数 */
161 uint_t lost; /* 失われたログの数 */
162 uint_t logmask; /* ログバッファに記録すべき重要度 */
163 uint_t lowmask; /* 低レベル出力すべき重要度 */
164} T_SYSLOG_RLOG;
165
166/*
167 * ログ情
168報を出力するためのライブラリ関数
169 */
170
171#ifndef TOPPERS_OMIT_SYSLOG
172
173extern ER syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) throw();
174
175Inline void
176_syslog_0(uint_t prio, uint_t type)
177{
178 SYSLOG logbuf;
179
180 logbuf.logtype = type;
181 (void) syslog_wri_log(prio, &logbuf);
182}
183
184Inline void
185_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
186{
187 SYSLOG logbuf;
188
189 logbuf.logtype = type;
190 logbuf.loginfo[0] = arg1;
191 (void) syslog_wri_log(prio, &logbuf);
192}
193
194Inline void
195_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
196{
197 SYSLOG logbuf;
198
199 logbuf.logtype = type;
200 logbuf.loginfo[0] = arg1;
201 logbuf.loginfo[1] = arg2;
202 (void) syslog_wri_log(prio, &logbuf);
203}
204
205Inline void
206_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
207 intptr_t arg3)
208{
209 SYSLOG logbuf;
210
211 logbuf.logtype = type;
212 logbuf.loginfo[0] = arg1;
213 logbuf.loginfo[1] = arg2;
214 logbuf.loginfo[2] = arg3;
215 (void) syslog_wri_log(prio, &logbuf);
216}
217
218Inline void
219_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
220 intptr_t arg3, intptr_t arg4)
221{
222 SYSLOG logbuf;
223
224 logbuf.logtype = type;
225 logbuf.loginfo[0] = arg1;
226 logbuf.loginfo[1] = arg2;
227 logbuf.loginfo[2] = arg3;
228 logbuf.loginfo[3] = arg4;
229 (void) syslog_wri_log(prio, &logbuf);
230}
231
232Inline void
233_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
234 intptr_t arg3, intptr_t arg4, intptr_t arg5)
235{
236 SYSLOG logbuf;
237
238 logbuf.logtype = type;
239 logbuf.loginfo[0] = arg1;
240 logbuf.loginfo[1] = arg2;
241 logbuf.loginfo[2] = arg3;
242 logbuf.loginfo[3] = arg4;
243 logbuf.loginfo[4] = arg5;
244 (void) syslog_wri_log(prio, &logbuf);
245}
246
247Inline void
248_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
249 intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
250{
251 SYSLOG logbuf;
252
253 logbuf.logtype = type;
254 logbuf.loginfo[0] = arg1;
255 logbuf.loginfo[1] = arg2;
256 logbuf.loginfo[2] = arg3;
257 logbuf.loginfo[3] = arg4;
258 logbuf.loginfo[4] = arg5;
259 logbuf.loginfo[5] = arg6;
260 (void) syslog_wri_log(prio, &logbuf);
261}
262
263/*
264 * ログ情
265報(コメント)を出力するためのライブラリ関数(vasyslog.c)
266 */
267extern void syslog(uint_t prio, const char *format, ...) throw();
268
269#else /* TOPPERS_OMIT_SYSLOG */
270
271/*
272 * システムログ出力を抑止する場合
273 */
274
275Inline void
276_syslog_0(uint_t prio, uint_t type)
277{
278}
279
280Inline void
281_syslog_1(uint_t prio, uint_t type, intptr_t arg1)
282{
283}
284
285Inline void
286_syslog_2(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2)
287{
288}
289
290Inline void
291_syslog_3(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
292 intptr_t arg3)
293{
294}
295
296Inline void
297_syslog_4(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
298 intptr_t arg3, intptr_t arg4)
299{
300}
301
302Inline void
303_syslog_5(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
304 intptr_t arg3, intptr_t arg4, intptr_t arg5)
305{
306}
307
308Inline void
309_syslog_6(uint_t prio, uint_t type, intptr_t arg1, intptr_t arg2,
310 intptr_t arg3, intptr_t arg4, intptr_t arg5, intptr_t arg6)
311{
312}
313
314Inline void
315syslog(uint_t prio, const char *format, ...)
316{
317}
318
319#endif /* TOPPERS_OMIT_SYSLOG */
320
321/*
322 * ログ情
323報(コメント)を出力するためのマクロ
324 *
325 * formatおよび後続の引数から作成したメッセージを,重大度prioでログ情
326
327 * 報として出力するためのマクロ.arg1~argnはintptr_t型にキャストする
328 * ため,intptr_t型に型変換できる任意の型でよい.
329 */
330
331#define syslog_0(prio, format) \
332 _syslog_1(prio, LOG_TYPE_COMMENT, (intptr_t)(format))
333
334#define syslog_1(prio, format, arg1) \
335 _syslog_2(prio, LOG_TYPE_COMMENT, (intptr_t)(format), \
336 (intptr_t)(arg1))
337
338#define syslog_2(prio, format, arg1, arg2) \
339 _syslog_3(prio, LOG_TYPE_COMMENT, (intptr_t)(format), \
340 (intptr_t)(arg1), (intptr_t)(arg2))
341
342#define syslog_3(prio, format, arg1, arg2, arg3) \
343 _syslog_4(prio, LOG_TYPE_COMMENT, (intptr_t)(format), \
344 (intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3))
345
346#define syslog_4(prio, format, arg1, arg2, arg3, arg4) \
347 _syslog_5(prio, LOG_TYPE_COMMENT, (intptr_t)(format), \
348 (intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
349 (intptr_t)(arg4))
350
351#define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
352 _syslog_6(prio, LOG_TYPE_COMMENT, (intptr_t)(format), \
353 (intptr_t)(arg1), (intptr_t)(arg2), (intptr_t)(arg3), \
354 (intptr_t)(arg4), (intptr_t)(arg5))
355
356/*
357 * ログ情
358報(アサーションの失敗)を出力するためのマクロ
359 */
360#ifndef TOPPERS_assert_fail
361#define TOPPERS_assert_fail(exp, file, line) \
362 _syslog_3(LOG_EMERG, LOG_TYPE_ASSERT, (intptr_t)(file), \
363 (intptr_t)(line), (intptr_t)(exp))
364#endif /* TOPPERS_assert_fail */
365
366#endif /* TOPPERS_MACRO_ONLY */
367
368#ifdef __cplusplus
369}
370#endif
371
372#endif /* TOPPERS_T_SYSLOG_H */
Note: See TracBrowser for help on using the repository browser.