00001 /* 00002 * TOPPERS/ASP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Advanced Standard Profile Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory 00009 * Graduate School of Information Science, Nagoya Univ., JAPAN 00010 * 00011 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 00012 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 00013 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 00014 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00015 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00016 * スコード中に含まれていること. 00017 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00018 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00019 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00020 * の無保証規定を掲載すること. 00021 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00022 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00023 * と. 00024 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00025 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00026 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00027 * 報告すること. 00028 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00029 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00030 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 00031 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 00032 * 免責すること. 00033 * 00034 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00035 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 00036 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 00037 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 00038 * の責任を負わない. 00039 * 00040 * @(#) $Id: trace_config.h 264 2007-07-12 08:23:10Z hiro $ 00041 */ 00042 00043 /* 00044 * トレースログに関する設定 00045 * 00046 * このインクルードファイルは,target_config.hおよびtarget_syssvc.hの 00047 * みからインクルードされる.他のファイルから直接インクルードしてはな 00048 * らない. 00049 */ 00050 00051 #ifndef TOPPERS_TRACE_CONFIG_H 00052 #define TOPPERS_TRACE_CONFIG_H 00053 00054 /* 00055 * トレースログバッファのサイズ 00056 */ 00057 #ifndef TCNT_TRACE_BUFFER 00058 #define TCNT_TRACE_BUFFER 1024 00059 #endif /* TCNT_TRACE_BUFFER */ 00060 00061 /* 00062 * トレース時刻の取得方法 00063 */ 00064 #ifndef TRACE_GET_TIM 00065 #define TRACE_GET_TIM() (current_time) 00066 #endif /* TRACE_GET_TIM */ 00067 00068 #ifndef TOPPERS_MACRO_ONLY 00069 00070 /* 00071 * トレースログのデータ構造 00072 * 00073 * システムログ機能のログ情報のデータ構造と同じものを用いる. 00074 */ 00075 #include <t_syslog.h> 00076 typedef SYSLOG TRACE; 00077 00078 /* 00079 * トレースログバッファとそれにアクセスするためのポインタ 00080 */ 00081 extern TRACE trace_buffer[]; /* トレースログバッファ */ 00082 extern uint_t trace_count; /* トレースログバッファ中のログの数 */ 00083 extern uint_t trace_head; /* 先頭のトレースログの格納位置 */ 00084 extern uint_t trace_tail; /* 次のトレースログの格納位置 */ 00085 extern uint_t trace_lost; /* 失われたトレースの数 */ 00086 00087 #endif /* TOPPERS_MACRO_ONLY */ 00088 00089 /* 00090 * トレースモードの定義 00091 */ 00092 #define TRACE_STOP UINT_C(0x00) /* トレース停止 */ 00093 #define TRACE_RINGBUF UINT_C(0x01) /* リングバッファモード */ 00094 #define TRACE_AUTOSTOP UINT_C(0x02) /* 自動停止モード */ 00095 #define TRACE_CLEAR UINT_C(0x04) /* トレースログのクリア */ 00096 00097 #ifndef TOPPERS_MACRO_ONLY 00098 00099 /* 00100 * トレースログ機能の初期化 00101 * 00102 * トレースログ機能を初期化する.初期化ルーチンとして登録することを想 00103 * 定している.引数により次の動作を行う. 00104 * 00105 * TRACE_STOP:初期化のみでトレースは開始しない. 00106 * TRACE_RINGBUF:リングバッファモードでトレースを開始. 00107 * TRACE_AUTOSTOP:自動停止モードでトレースを開始. 00108 */ 00109 extern void trace_initialize(intptr_t exinf); 00110 00111 /* 00112 * トレースログの開始 00113 * 00114 * トレースログの記録を開始/停止する.引数により次の動作を行う. 00115 * 00116 * TRACE_STOP:トレースを停止. 00117 * TRACE_RINGBUF:リングバッファモードでトレースを開始. 00118 * TRACE_AUTOSTOP:自動停止モードでトレースを開始. 00119 * TRACE_CLEAR:トレースログをクリア. 00120 */ 00121 extern ER trace_sta_log(MODE mode); 00122 00123 /* 00124 * トレースログの書込み 00125 */ 00126 extern ER trace_wri_log(TRACE *p_trace); 00127 00128 /* 00129 * トレースログの読出し 00130 */ 00131 extern ER trace_rea_log(TRACE *p_trace); 00132 00133 /* 00134 * トレースログのダンプ(trace_dump.c) 00135 * 00136 * トレースログをダンプする.終了処理ルーチンとして登録することも想定 00137 * している.引数として,ダンプ先となる文字出力関数へのポインタを渡す. 00138 * ターゲット依存の低レベル文字出力を利用する場合には,target_putcを渡 00139 * す. 00140 */ 00141 extern void trace_dump(intptr_t exinf); 00142 00143 /* 00144 * トレースログを出力するためのライブラリ関数 00145 */ 00146 extern void trace_write_0(uint_t type); 00147 extern void trace_write_1(uint_t type, intptr_t arg1); 00148 extern void trace_write_2(uint_t type, intptr_t arg1, intptr_t arg2); 00149 extern void trace_write_3(uint_t type, intptr_t arg1, intptr_t arg2, 00150 intptr_t arg3); 00151 00152 /* 00153 * トレースログを出力するためのマクロ 00154 */ 00155 00156 #define trace_0(type) \ 00157 trace_write_0(type) 00158 00159 #define trace_1(type, arg1) \ 00160 trace_write_1(type, (intptr_t)(arg1)) 00161 00162 #define trace_2(type, arg1, arg2) \ 00163 trace_write_2(type, (intptr_t)(arg1), (intptr_t)(arg2)) 00164 00165 #define trace_3(type, arg1, arg2, arg3) \ 00166 trace_write_3(type, (intptr_t)(arg1), (intptr_t)(arg2), \ 00167 (intptr_t)(arg3)) 00168 00169 #endif /* TOPPERS_MACRO_ONLY */ 00170 00171 /* 00172 * トレースログ方法の設定 00173 */ 00174 #define LOG_TSKSTAT(p_tcb) trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat) 00175 00176 #define LOG_DSP_LEAVE(p_tcb) trace_1(LOG_TYPE_DSP|LOG_LEAVE, p_tcb) 00177 00178 #define LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog) \ 00179 trace_wri_log((TRACE *) p_syslog) 00180 00181 #endif /* TOPPERS_TRACE_CONFIG_H */
Copyright © 2008 by Kijineko Inc.