source: atk2-sc3_fl850f1l/include/t_syslog.h@ 165

Last change on this file since 165 was 117, checked in by ertl-ishikawa, 9 years ago

ATK2-SC3 1.3.2 FL850F1L(RH850F1L)依存部(GCC/GHS/CCRH)を追加

File size: 14.3 KB
Line 
1/*
2 * TOPPERS ATK2
3 * Toyohashi Open Platform for Embedded Real-Time Systems
4 * Automotive Kernel Version 2
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004-2015 by Center for Embedded Computing Systems
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 * Copyright (C) 2011-2015 by FUJI SOFT INCORPORATED, JAPAN
11 * Copyright (C) 2011-2013 by Spansion LLC, USA
12 * Copyright (C) 2011-2015 by NEC Communication Systems, Ltd., JAPAN
13 * Copyright (C) 2011-2015 by Panasonic Advanced Technology Development Co., Ltd., JAPAN
14 * Copyright (C) 2011-2014 by Renesas Electronics Corporation, JAPAN
15 * Copyright (C) 2011-2015 by Sunny Giken Inc., JAPAN
16 * Copyright (C) 2011-2015 by TOSHIBA CORPORATION, JAPAN
17 * Copyright (C) 2011-2015 by Witz Corporation
18 * Copyright (C) 2014-2015 by AISIN COMCRUISE Co., Ltd., JAPAN
19 * Copyright (C) 2014-2015 by eSOL Co.,Ltd., JAPAN
20 * Copyright (C) 2014-2015 by SCSK Corporation, JAPAN
21 *
22 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
23 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
24 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
25 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
26 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
27 * スコード中に含まれていること.
28 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
29 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
30 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
31 * の無保証規定を掲載すること.
32 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
33 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
34 * と.
35 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
41 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
42 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
43 * 免責すること.
44 *
45 * 本ソフトウェアは,AUTOSAR(AUTomotive Open System ARchitecture)仕
46 * 様に基づいている.上記の許諾は,AUTOSARの知的財産権を許諾するもので
47 * はない.AUTOSARは,AUTOSAR仕様に基づいたソフトウェアを商用目的で利
48 * 用する者に対して,AUTOSARパートナーになることを求めている.
49 *
50 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
51 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
52 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
53 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
54 * の責任を負わない.
55 *
56 * $Id: t_syslog.h 187 2015-06-25 03:39:04Z t_ishikawa $
57 */
58
59/*
60 * システムログ出力を行うための定義
61 *
62 * システムログサービスは,システムのログ情報を出力するためのサービス
63 * である
64 * カーネルからのログ情報の出力にも用いるため,内部で待ち状態にはいる
65 * ことはない
66 *
67 * ログ情報は,カーネル内のログバッファに書き込むか,低レベルの文字出
68 * 力関数を用いて出力する
69 * どちらを使うかは,拡張サービスコールで切り換えることができる
70 *
71 * ログバッファ領域がオーバフローした場合には,古いログ情報を消して上
72 * 書きする
73 *
74 * アセンブリ言語のソースファイルからこのファイルをインクルードする時
75 * は,TOPPERS_MACRO_ONLYを定義しておくことで,マクロ定義以外の記述を
76 * 除くことができる
77 */
78
79#ifndef TOPPERS_T_SYSLOG_H
80#define TOPPERS_T_SYSLOG_H
81
82#include "Os.h"
83
84/*
85 * ログ情報の種別の定義
86 */
87#define LOG_TYPE_COMMENT UINT_C(0x01) /* コメント */
88#define LOG_TYPE_ASSERT UINT_C(0x02) /* アサーションの失敗 */
89
90#define LOG_TYPE_ISR UINT_C(0x11) /* 割込みサービスルーチン */
91#define LOG_TYPE_ALM UINT_C(0x12) /* アラームハンドラ */
92#define LOG_TYPE_TSKSTAT UINT_C(0x13) /* タスク状態変化 */
93#define LOG_TYPE_DSP UINT_C(0x14) /* ディスパッチャ */
94#define LOG_TYPE_SVC UINT_C(0x15) /* サービスコール */
95#define LOG_TYPE_SCHTBL UINT_C(0x16) /* スケジュールテーブル満了処理 */
96#define LOG_TYPE_STAHOOK UINT_C(0x17) /* スタートアップフック */
97#define LOG_TYPE_ERRHOOK UINT_C(0x18) /* エラーフック */
98#define LOG_TYPE_PROHOOK UINT_C(0x19) /* プロテクションフック */
99#define LOG_TYPE_SHUTHOOK UINT_C(0x1a) /* シャットダウンフック */
100#define LOG_TYPE_STAHOOKOSAP UINT_C(0x1b) /* OSAPスタートアップフック */
101#define LOG_TYPE_ERRHOOKOSAP UINT_C(0x1c) /* OSAPエラーフック */
102#define LOG_TYPE_SHUTHOOKOSAP UINT_C(0x1d) /* OSAPシャットダウンフック */
103#define LOG_TYPE_TFN UINT_C(0x1e) /* 信頼関数 */
104
105#define LOG_ENTER UINT_C(0x00) /* 入口/開始 */
106#define LOG_LEAVE UINT_C(0x80) /* 出口/終了 */
107
108/*
109 * ログ情報の重要度の定義
110 */
111#define LOG_EMERG UINT_C(0) /* シャットダウンに値するエラー */
112#define LOG_ALERT UINT_C(1)
113#define LOG_CRIT UINT_C(2)
114#define LOG_ERROR UINT_C(3) /* システムエラー */
115#define LOG_WARNING UINT_C(4) /* 警告メッセージ */
116#define LOG_NOTICE UINT_C(5)
117#define LOG_INFO UINT_C(6)
118#define LOG_DEBUG UINT_C(7) /* デバッグ用メッセージ */
119
120#ifndef TOPPERS_MACRO_ONLY
121
122/*
123 * ログ出力用データ型
124 */
125
126typedef uint32 ObjectIDType; /* オブジェクトのID番号 */
127
128/*
129 * ログ情報のデータ構造
130 */
131
132#define TMAX_LOGINFO UINT_C(6)
133
134typedef struct {
135 uint32 logtype; /* ログ情報の種別 */
136 SystemTimeMsType logtim; /* ログ時刻 */
137 uintptr loginfo[TMAX_LOGINFO]; /* その他のログ情報 */
138} SYSLOG;
139
140/*
141 * ログ情報の重要度のビットマップを作るためのマクロ
142 */
143#define LOG_MASK(prio) (1U << (prio))
144#define LOG_UPTO(prio) ((((uint32) 1) << ((prio) + 1U)) - 1U)
145
146#include "target_syslog.h"
147
148#ifndef TOPPERS_OMIT_SYSLOG
149
150/*
151 * 信頼OSアプリケーション用システムログ機能の初期化
152 */
153extern void _syslog_syslog_initialize(void);
154
155/*
156 * 信頼OSアプリケーション用出力すべきログ情報の重要度の設定
157 */
158extern StatusType _syslog_syslog_msk_log(uint32 lowmask);
159
160/*
161 * 信頼OSアプリケーション用ログ情報を出力するためのライブラリ関数
162 */
163extern StatusType _syslog_syslog_wri_log(uint32 prio, const SYSLOG *p_syslog);
164
165/*
166 * 非信頼OSアプリケーション用ログ情報を出力するためのライブラリ関数
167 */
168extern StatusType syslog_wri_log(uint32 prio, const SYSLOG *p_syslog);
169
170#define KERLIBSLG_ID_SYSLOG_INITIALIZE UINT_C(0)
171#define KERLIBSLG_ID_SYSLOG_WRI_LOG UINT_C(1)
172#define KERLIBSLG_ID_SYSLOG_MSK_LOG UINT_C(3)
173#define KERLIBSLG_ID_SYSLOG_PRINTF UINT_C(5)
174#define KERLIBSLG_ID_SYSLOG_PRINT UINT_C(6)
175
176typedef struct kernel_library_syslog_parameter {
177 uint8 index;
178 uint32 prio;
179 const SYSLOG *p_const_syslog;
180 uint32 lowmask;
181 const char8 *p_format;
182 const uintptr *p_args;
183 void (*outputc)(char8 c);
184 StatusType return_er;
185} KERLIBSLG_PRM;
186
187LOCAL_INLINE void
188_syslog_1(uint32 prio, uint32 type, uintptr arg1)
189{
190 SYSLOG syslog;
191
192 syslog.logtype = type;
193 syslog.loginfo[0] = arg1;
194 (void) syslog_wri_log(prio, &syslog);
195}
196
197LOCAL_INLINE void
198_syslog_2(uint32 prio, uint32 type, uintptr arg1, uintptr arg2)
199{
200 SYSLOG syslog;
201
202 syslog.logtype = type;
203 syslog.loginfo[0] = arg1;
204 syslog.loginfo[1] = arg2;
205 (void) syslog_wri_log(prio, &syslog);
206}
207
208LOCAL_INLINE void
209_syslog_3(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
210 uintptr arg3)
211{
212 SYSLOG syslog;
213
214 syslog.logtype = type;
215 syslog.loginfo[0] = arg1;
216 syslog.loginfo[1] = arg2;
217 syslog.loginfo[2] = arg3;
218 (void) syslog_wri_log(prio, &syslog);
219}
220
221LOCAL_INLINE void
222_syslog_4(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
223 uintptr arg3, uintptr arg4)
224{
225 SYSLOG syslog;
226
227 syslog.logtype = type;
228 syslog.loginfo[0] = arg1;
229 syslog.loginfo[1] = arg2;
230 syslog.loginfo[2] = arg3;
231 syslog.loginfo[3] = arg4;
232 (void) syslog_wri_log(prio, &syslog);
233}
234
235LOCAL_INLINE void
236_syslog_5(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
237 uintptr arg3, uintptr arg4, uintptr arg5)
238{
239 SYSLOG syslog;
240
241 syslog.logtype = type;
242 syslog.loginfo[0] = arg1;
243 syslog.loginfo[1] = arg2;
244 syslog.loginfo[2] = arg3;
245 syslog.loginfo[3] = arg4;
246 syslog.loginfo[4] = arg5;
247 (void) syslog_wri_log(prio, &syslog);
248}
249
250LOCAL_INLINE void
251_syslog_6(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
252 uintptr arg3, uintptr arg4, uintptr arg5, uintptr arg6)
253{
254 SYSLOG syslog;
255
256 syslog.logtype = type;
257 syslog.loginfo[0] = arg1;
258 syslog.loginfo[1] = arg2;
259 syslog.loginfo[2] = arg3;
260 syslog.loginfo[3] = arg4;
261 syslog.loginfo[4] = arg5;
262 syslog.loginfo[5] = arg6;
263 (void) syslog_wri_log(prio, &syslog);
264}
265
266/*
267 * ログ情報を出力するためのライブラリ関数
268 * 信頼関数を経由せず直接呼出しを行う
269 */
270LOCAL_INLINE void
271_syslog_syslog_1(uint32 prio, uint32 type, uintptr arg1)
272{
273 SYSLOG syslog;
274
275 syslog.logtype = type;
276 syslog.loginfo[0] = arg1;
277 (void) _syslog_syslog_wri_log(prio, &syslog);
278}
279
280LOCAL_INLINE void
281_syslog_syslog_2(uint32 prio, uint32 type, uintptr arg1, uintptr arg2)
282{
283 SYSLOG syslog;
284
285 syslog.logtype = type;
286 syslog.loginfo[0] = arg1;
287 syslog.loginfo[1] = arg2;
288 (void) _syslog_syslog_wri_log(prio, &syslog);
289}
290
291LOCAL_INLINE void
292_syslog_syslog_3(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
293 uintptr arg3)
294{
295 SYSLOG syslog;
296
297 syslog.logtype = type;
298 syslog.loginfo[0] = arg1;
299 syslog.loginfo[1] = arg2;
300 syslog.loginfo[2] = arg3;
301 (void) _syslog_syslog_wri_log(prio, &syslog);
302}
303
304LOCAL_INLINE void
305_syslog_syslog_4(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
306 uintptr arg3, uintptr arg4)
307{
308 SYSLOG syslog;
309
310 syslog.logtype = type;
311 syslog.loginfo[0] = arg1;
312 syslog.loginfo[1] = arg2;
313 syslog.loginfo[2] = arg3;
314 syslog.loginfo[3] = arg4;
315 (void) _syslog_syslog_wri_log(prio, &syslog);
316}
317
318
319LOCAL_INLINE void
320_syslog_syslog_5(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
321 uintptr arg3, uintptr arg4, uintptr arg5)
322{
323 SYSLOG syslog;
324
325 syslog.logtype = type;
326 syslog.loginfo[0] = arg1;
327 syslog.loginfo[1] = arg2;
328 syslog.loginfo[2] = arg3;
329 syslog.loginfo[3] = arg4;
330 syslog.loginfo[4] = arg5;
331 (void) _syslog_syslog_wri_log(prio, &syslog);
332}
333
334LOCAL_INLINE void
335_syslog_syslog_6(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
336 uintptr arg3, uintptr arg4, uintptr arg5, uintptr arg6)
337{
338 SYSLOG syslog;
339
340 syslog.logtype = type;
341 syslog.loginfo[0] = arg1;
342 syslog.loginfo[1] = arg2;
343 syslog.loginfo[2] = arg3;
344 syslog.loginfo[3] = arg4;
345 syslog.loginfo[4] = arg5;
346 syslog.loginfo[5] = arg6;
347 (void) _syslog_syslog_wri_log(prio, &syslog);
348}
349
350/*
351 * ログ情報(コメント)を出力するためのライブラリ関数(vasyslog.c)
352 */
353extern void syslog(uint32 prio, const char8 *format, ...);
354
355#else /* TOPPERS_OMIT_SYSLOG */
356
357/*
358 * システムログ出力を抑止する場合
359 */
360
361LOCAL_INLINE void
362_syslog_1(uint32 prio, uint32 type, uintptr arg1)
363{
364}
365
366LOCAL_INLINE void
367_syslog_2(uint32 prio, uint32 type, uintptr arg1, uintptr arg2)
368{
369}
370
371LOCAL_INLINE void
372_syslog_3(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
373 uintptr arg3)
374{
375}
376
377LOCAL_INLINE void
378_syslog_4(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
379 uintptr arg3, uintptr arg4)
380{
381}
382
383LOCAL_INLINE void
384_syslog_5(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
385 uintptr arg3, uintptr arg4, uintptr arg5)
386{
387}
388
389LOCAL_INLINE void
390_syslog_6(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
391 uintptr arg3, uintptr arg4, uintptr arg5, uintptr arg6)
392{
393}
394
395LOCAL_INLINE void
396_syslog_syslog_1(uint32 prio, uint32 type, uintptr arg1)
397{
398}
399
400LOCAL_INLINE void
401_syslog_syslog_2(uint32 prio, uint32 type, uintptr arg1, uintptr arg2)
402{
403}
404
405LOCAL_INLINE void
406_syslog_syslog_3(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
407 uintptr arg3)
408{
409}
410
411LOCAL_INLINE void
412_syslog_syslog_4(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
413 uintptr arg3, uintptr arg4)
414{
415}
416
417LOCAL_INLINE void
418_syslog_syslog_5(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
419 uintptr arg3, uintptr arg4, uintptr arg5)
420{
421}
422
423LOCAL_INLINE void
424_syslog_syslog_6(uint32 prio, uint32 type, uintptr arg1, uintptr arg2,
425 uintptr arg3, uintptr arg4, uintptr arg5, uintptr arg6)
426{
427}
428
429LOCAL_INLINE void
430syslog(uint32 prio, const char8 *format, ...)
431{
432}
433
434#endif /* TOPPERS_OMIT_SYSLOG */
435
436/*
437 * ログ情報(コメント)を出力するためのマクロ
438 *
439 * formatおよび後続の引数から作成したメッセージを,重大度prioでログ情
440 * 報として出力するためのマクロ
441 * arg1〜argnはuintptr型にキャストするため,uintptr型に型変換できる任
442 * 意の型でよい
443 */
444
445#define syslog_0(prio, format) \
446 _syslog_1((prio), LOG_TYPE_COMMENT, (uintptr) (format))
447
448#define syslog_1(prio, format, arg1) \
449 _syslog_2((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
450 (uintptr) (arg1))
451
452#define syslog_2(prio, format, arg1, arg2) \
453 _syslog_3((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
454 (uintptr) (arg1), (uintptr) (arg2))
455
456#define syslog_3(prio, format, arg1, arg2, arg3) \
457 _syslog_4((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
458 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3))
459
460#define syslog_4(prio, format, arg1, arg2, arg3, arg4) \
461 _syslog_5((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
462 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3), \
463 (uintptr) (arg4))
464
465#define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
466 _syslog_6((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
467 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3), \
468 (uintptr) (arg4), (uintptr) (arg5))
469
470#define syslog_syslog_0(prio, format) \
471 _syslog_syslog_1((prio), LOG_TYPE_COMMENT, (uintptr) (format))
472
473#define syslog_syslog_1(prio, format, arg1) \
474 _syslog_syslog_2((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
475 (uintptr) (arg1))
476
477#define syslog_syslog_2(prio, format, arg1, arg2) \
478 _syslog_syslog_3((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
479 (uintptr) (arg1), (uintptr) (arg2))
480
481#define syslog_syslog_3(prio, format, arg1, arg2, arg3) \
482 _syslog_syslog_4((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
483 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3))
484
485#define syslog_syslog_4(prio, format, arg1, arg2, arg3, arg4) \
486 _syslog_syslog_5((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
487 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3), \
488 (uintptr) (arg4))
489
490#define syslog_syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \
491 _syslog_syslog_6((prio), LOG_TYPE_COMMENT, (uintptr) (format), \
492 (uintptr) (arg1), (uintptr) (arg2), (uintptr) (arg3), \
493 (uintptr) (arg4), (uintptr) (arg5))
494
495#endif /* TOPPERS_MACRO_ONLY */
496
497#endif /* TOPPERS_T_SYSLOG_H */
Note: See TracBrowser for help on using the repository browser.