source: atk2-sc3-1.4.0-ntisr/include/t_syslog.h

Last change on this file was 172, checked in by ertl-ishikawa, 8 years ago

ATK2-SC3 1.4.0 RH850依存部 非信頼C2ISR対応を追加

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