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 によって生成されました。