|
|
t_syslog.h説明を見る。00001 /* 00002 * TOPPERS/FDMP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Function Distributed Multiprocessor Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory 00009 * Graduate School of Information Science, Nagoya Univ., JAPAN 00010 * 00011 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00012 * によって公表されている GNU General Public License の Version 2 に記 00013 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00014 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00015 * 利用と呼ぶ)することを無償で許諾する. 00016 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00017 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00018 * スコード中に含まれていること. 00019 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00020 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00021 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00022 * の無保証規定を掲載すること. 00023 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00024 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00025 * と. 00026 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00027 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00028 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00029 * 報告すること. 00030 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00031 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00032 * 00033 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00034 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00035 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00036 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00037 * 00038 * @(#) $Id: t_syslog.h,v 1.1 2005/04/03 13:33:19 honda Exp $ 00039 */ 00040 00066 #ifndef _T_SYSLOG_H_ 00067 #define _T_SYSLOG_H_ 00068 00069 /* 00070 * ログ情報の種別の定義 00071 * 00072 * LOG_TYPE_CYC,LOG_TYPE_ASSERT 以外は,デバッギングインタフェース仕 00073 * 様と合致している. 00074 */ 00075 #define LOG_TYPE_INH 0x01u /* 割込みハンドラ */ 00076 #define LOG_TYPE_ISR 0x02u /* 割込みサービスルーチン */ 00077 #define LOG_TYPE_CYC 0x03u /* 周期ハンドラ */ 00078 #define LOG_TYPE_EXC 0x04u /* CPU例外ハンドラ */ 00079 #define LOG_TYPE_TEX 0x05u /* タスク例外処理ルーチン */ 00080 #define LOG_TYPE_TSKSTAT 0x06u /* タスク状態変化 */ 00081 #define LOG_TYPE_DSP 0x07u /* ディスパッチャ */ 00082 #define LOG_TYPE_SVC 0x08u /* サービスコール */ 00083 #define LOG_TYPE_COMMENT 0x09u /* コメント */ 00084 #define LOG_TYPE_ASSERT 0x0au /* アサーションの失敗 */ 00085 00086 #define LOG_ENTER 0x00u /* 入口/開始 */ 00087 #define LOG_LEAVE 0x80u /* 出口/終了 */ 00088 00089 /* 00090 * ログ情報の重要度の定義 00091 */ 00092 #define LOG_EMERG 0u /* シャットダウンに値するエラー */ 00093 #define LOG_ALERT 1u 00094 #define LOG_CRIT 2u 00095 #define LOG_ERROR 3u /* システムエラー */ 00096 #define LOG_WARNING 4u /* 警告メッセージ */ 00097 #define LOG_NOTICE 5u 00098 #define LOG_INFO 6u 00099 #define LOG_DEBUG 7u /* デバッグ用メッセージ */ 00100 00101 #ifndef _MACRO_ONLY 00102 00103 /* 00104 * ログ情報のデータ構造 00105 */ 00106 00107 #define TMAX_LOGINFO 6 00108 00109 typedef struct { 00110 UINT logtype; /* ログ情報の種別 */ 00111 SYSTIM logtim; /* ログ時刻 */ 00112 VP_INT loginfo[TMAX_LOGINFO]; /* その他のログ情報 */ 00113 } SYSLOG; 00114 00115 /* 00116 * ログ情報の重要度のビットマップを作るためのマクロ 00117 */ 00118 #define LOG_MASK(prio) (1u << (prio)) 00119 #define LOG_UPTO(prio) ((1u << ((prio) + 1)) - 1) 00120 00121 #ifndef OMIT_SYSLOG 00122 00123 /* 00124 * ログ情報の出力 00125 */ 00126 extern ER vwri_log(UINT prio, SYSLOG *p_log) throw(); 00127 00128 /* 00129 * ログバッファからのログ情報の読出し 00130 */ 00131 extern ER_UINT vrea_log(SYSLOG *p_log) throw(); 00132 00133 /* 00134 * 出力すべきログ情報の重要度の設定 00135 */ 00136 extern ER vmsk_log(UINT logmask, UINT lowmask) throw(); 00137 00138 /* 00139 * ログ情報を出力するためのライブラリ関数 00140 */ 00141 00142 Inline ER 00143 _syslog_0(UINT prio, UINT type) 00144 { 00145 SYSLOG log; 00146 00147 log.logtype = type; 00148 return(vwri_log(prio, &log)); 00149 } 00150 00151 Inline ER 00152 _syslog_1(UINT prio, UINT type, VP_INT arg1) 00153 { 00154 SYSLOG log; 00155 00156 log.logtype = type; 00157 log.loginfo[0] = arg1; 00158 return(vwri_log(prio, &log)); 00159 } 00160 00161 Inline ER 00162 _syslog_2(UINT prio, UINT type, VP_INT arg1, VP_INT arg2) 00163 { 00164 SYSLOG log; 00165 00166 log.logtype = type; 00167 log.loginfo[0] = arg1; 00168 log.loginfo[1] = arg2; 00169 return(vwri_log(prio, &log)); 00170 } 00171 00172 Inline ER 00173 _syslog_3(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, VP_INT arg3) 00174 { 00175 SYSLOG log; 00176 00177 log.logtype = type; 00178 log.loginfo[0] = arg1; 00179 log.loginfo[1] = arg2; 00180 log.loginfo[2] = arg3; 00181 return(vwri_log(prio, &log)); 00182 } 00183 00184 Inline ER 00185 _syslog_4(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, 00186 VP_INT arg3, VP_INT arg4) 00187 { 00188 SYSLOG log; 00189 00190 log.logtype = type; 00191 log.loginfo[0] = arg1; 00192 log.loginfo[1] = arg2; 00193 log.loginfo[2] = arg3; 00194 log.loginfo[3] = arg4; 00195 return(vwri_log(prio, &log)); 00196 } 00197 00198 Inline ER 00199 _syslog_5(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, 00200 VP_INT arg3, VP_INT arg4, VP_INT arg5) 00201 { 00202 SYSLOG log; 00203 00204 log.logtype = type; 00205 log.loginfo[0] = arg1; 00206 log.loginfo[1] = arg2; 00207 log.loginfo[2] = arg3; 00208 log.loginfo[3] = arg4; 00209 log.loginfo[4] = arg5; 00210 return(vwri_log(prio, &log)); 00211 } 00212 00213 Inline ER 00214 _syslog_6(UINT prio, UINT type, VP_INT arg1, VP_INT arg2, VP_INT arg3, 00215 VP_INT arg4, VP_INT arg5, VP_INT arg6) 00216 { 00217 SYSLOG log; 00218 00219 log.logtype = type; 00220 log.loginfo[0] = arg1; 00221 log.loginfo[1] = arg2; 00222 log.loginfo[2] = arg3; 00223 log.loginfo[3] = arg4; 00224 log.loginfo[4] = arg5; 00225 log.loginfo[5] = arg6; 00226 return(vwri_log(prio, &log)); 00227 } 00228 00229 #else /* OMIT_SYSLOG */ 00230 00231 #define vwri_log(prio, p_log) E_OK 00232 #define vrea_log(p_log) E_OK 00233 #define vmsk_log(logmask, lowmask) E_OK 00234 00235 #define _syslog_0(prio, type) E_OK 00236 #define _syslog_1(prio, type, arg1) E_OK 00237 #define _syslog_2(prio, type, arg1, arg2) E_OK 00238 #define _syslog_3(prio, type, arg1, arg2, arg3) E_OK 00239 #define _syslog_4(prio, type, arg1, arg2, arg3, arg4) E_OK 00240 #define _syslog_5(prio, type, arg1, arg2, arg3, arg4, arg5) E_OK 00241 #define _syslog_6(prio, type, arg1, arg2, arg3, arg4, arg5, arg6) E_OK 00242 00243 #endif /* OMIT_SYSLOG */ 00244 00245 /* 00246 * ログ情報(コメント)を出力するためのマクロ 00247 * 00248 * format および後続の引数から作成したメッセージを,重大度 prio で 00249 * ログ情報として出力するためのマクロ.arg1〜argn は VP_INT型にキャ 00250 * ストするため,VP_INT型に型変換できる任意の型でよい. 00251 */ 00252 00253 #define syslog_0(prio, format) \ 00254 _syslog_1(prio, LOG_TYPE_COMMENT, (VP_INT) format) 00255 00256 #define syslog_1(prio, format, arg1) \ 00257 _syslog_2(prio, LOG_TYPE_COMMENT, (VP_INT) format, \ 00258 (VP_INT)(arg1)) 00259 00260 #define syslog_2(prio, format, arg1, arg2) \ 00261 _syslog_3(prio, LOG_TYPE_COMMENT, (VP_INT) format, \ 00262 (VP_INT)(arg1), (VP_INT)(arg2)) 00263 00264 #define syslog_3(prio, format, arg1, arg2, arg3) \ 00265 _syslog_4(prio, LOG_TYPE_COMMENT, (VP_INT) format, \ 00266 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3)) 00267 00268 #define syslog_4(prio, format, arg1, arg2, arg3, arg4) \ 00269 _syslog_5(prio, LOG_TYPE_COMMENT, (VP_INT) format, \ 00270 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3), \ 00271 (VP_INT)(arg4)) 00272 00273 #define syslog_5(prio, format, arg1, arg2, arg3, arg4, arg5) \ 00274 _syslog_6(prio, LOG_TYPE_COMMENT, (VP_INT) format, \ 00275 (VP_INT)(arg1), (VP_INT)(arg2), (VP_INT)(arg3), \ 00276 (VP_INT)(arg4), (VP_INT)(arg5)) 00277 00278 /* 00279 * ログ情報(コメント)を出力するためのライブラリ関数(vasyslog.c) 00280 */ 00281 extern ER syslog(UINT prio, const char *format, ...) throw(); 00282 00283 /* 00284 * ログ情報のフォーマット出力(log_output.c) 00285 */ 00286 extern void syslog_printf(const char *format, VP_INT *args, 00287 void (*putc)(char)) throw(); 00288 extern void syslog_print(SYSLOG *p_log, void (*putc)(char)) throw(); 00289 extern void syslog_output(void (*putc)(char)) throw(); 00290 00291 #endif /* _MACRO_ONLY */ 00292 #endif /* _T_SYSLOG_H_ */ Copyright © 2006 by TAKAGI Nobuhisa. このページは Mon Apr 3 23:49:13 2006 に Doxygen によって生成されました。 |