OSDN Git Service

マルチプロジェクト型にレポジトリを変更するために移動した
[toppersasp4lpc/asp.git] / asp / arch / logtrace / trace_config.h
1 /*
2  *  TOPPERS/ASP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Advanced Standard Profile Kernel
5  * 
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *  Copyright (C) 2004-2007 by Embedded and Real-Time Systems Laboratory
9  *              Graduate School of Information Science, Nagoya Univ., JAPAN
10  * 
11  *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
13  *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16  *      スコード中に含まれていること.
17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20  *      の無保証規定を掲載すること.
21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23  *      と.
24  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
26  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27  *        報告すること.
28  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
31  *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
32  *      免責すること.
33  * 
34  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
35  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
36  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
37  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
38  *  の責任を負わない.
39  * 
40  *  @(#) $Id: trace_config.h 1230 2008-08-08 05:52:17Z ertl-hiro $
41  */
42
43 /*
44  *              トレースログに関する設定
45  *
46  *  このインクルードファイルは,target_config.hおよびtarget_syssvc.hの
47  *  みからインクルードされる.他のファイルから直接インクルードしてはな
48  *  らない.
49  */
50
51 #ifndef TOPPERS_TRACE_CONFIG_H
52 #define TOPPERS_TRACE_CONFIG_H
53
54 /*
55  *  トレースログバッファのサイズ
56  */
57 #ifndef TCNT_TRACE_BUFFER
58 #define TCNT_TRACE_BUFFER       1024
59 #endif /* TCNT_TRACE_BUFFER */
60
61 /*
62  *  トレース時刻の取得方法
63  */
64 #ifndef TRACE_GET_TIM
65 #define TRACE_GET_TIM()         (current_time)
66 #endif /* TRACE_GET_TIM */
67
68 #ifndef TOPPERS_MACRO_ONLY
69
70 /*
71  *  トレースログのデータ構造
72  *
73  *  システムログ機能のログ情報のデータ構造と同じものを用いる.
74  */
75 #include <t_syslog.h>
76 typedef SYSLOG  TRACE;
77
78 /*
79  *  トレースログバッファとそれにアクセスするためのポインタ
80  */
81 extern TRACE    trace_buffer[];         /* トレースログバッファ */
82 extern uint_t   trace_count;            /* トレースログバッファ中のログの数 */
83 extern uint_t   trace_head;                     /* 先頭のトレースログの格納位置 */
84 extern uint_t   trace_tail;                     /* 次のトレースログの格納位置 */
85 extern uint_t   trace_lost;                     /* 失われたトレースの数 */
86
87 #endif /* TOPPERS_MACRO_ONLY */
88
89 /*
90  *  トレースモードの定義
91  */
92 #define TRACE_STOP                      UINT_C(0x00)    /* トレース停止 */
93 #define TRACE_RINGBUF           UINT_C(0x01)    /* リングバッファモード */
94 #define TRACE_AUTOSTOP          UINT_C(0x02)    /* 自動停止モード */
95 #define TRACE_CLEAR                     UINT_C(0x04)    /* トレースログのクリア */
96
97 #ifndef TOPPERS_MACRO_ONLY
98
99 /*
100  *  トレースログ機能の初期化
101  *
102  *  トレースログ機能を初期化する.初期化ルーチンとして登録することを想
103  *  定している.引数により次の動作を行う.
104  *
105  *  TRACE_STOP:初期化のみでトレースは開始しない.
106  *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
107  *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
108  */
109 extern void     trace_initialize(intptr_t exinf);
110
111 /*
112  *  トレースログの開始
113  *
114  *  トレースログの記録を開始/停止する.引数により次の動作を行う.
115  *
116  *  TRACE_STOP:トレースを停止.
117  *  TRACE_RINGBUF:リングバッファモードでトレースを開始.
118  *  TRACE_AUTOSTOP:自動停止モードでトレースを開始.
119  *  TRACE_CLEAR:トレースログをクリア.
120  */
121 extern ER       trace_sta_log(MODE mode);
122
123 /*
124  *  トレースログの書込み
125  */
126 extern ER       trace_wri_log(TRACE *p_trace);
127
128 /*
129  *  トレースログの読出し
130  */
131 extern ER       trace_rea_log(TRACE *p_trace);
132
133 /* 
134  *  トレースログのダンプ(trace_dump.c)
135  *
136  *  トレースログをダンプする.終了処理ルーチンとして登録することも想定
137  *  している.引数として,ダンプ先となる文字出力関数へのポインタを渡す.
138  *  ターゲット依存の低レベル文字出力を利用する場合には,target_putcを渡
139  *  す.
140  */
141 extern void     trace_dump(intptr_t exinf);
142
143 /*
144  *  トレースログを出力するためのライブラリ関数
145  */
146 extern void     trace_write_0(uint_t type);
147 extern void     trace_write_1(uint_t type, intptr_t arg1);
148 extern void     trace_write_2(uint_t type, intptr_t arg1, intptr_t arg2);
149 extern void     trace_write_3(uint_t type, intptr_t arg1, intptr_t arg2,
150                                                                                                                 intptr_t arg3);
151
152 /*
153  *  トレースログを出力するためのマクロ
154  */
155
156 #define trace_0(type) \
157                                 trace_write_0(type)
158
159 #define trace_1(type, arg1) \
160                                 trace_write_1(type, (intptr_t)(arg1))
161
162 #define trace_2(type, arg1, arg2) \
163                                 trace_write_2(type, (intptr_t)(arg1), (intptr_t)(arg2))
164
165 #define trace_3(type, arg1, arg2, arg3) \
166                                 trace_write_3(type, (intptr_t)(arg1), (intptr_t)(arg2), \
167                                                 (intptr_t)(arg3))
168
169 #endif /* TOPPERS_MACRO_ONLY */
170
171 /*
172  *  トレースログ方法の設定
173  */
174 #define LOG_TSKSTAT(p_tcb)              trace_2(LOG_TYPE_TSKSTAT, p_tcb, p_tcb->tstat)
175
176 #define LOG_DSP_LEAVE(p_tcb)    trace_1(LOG_TYPE_DSP|LOG_LEAVE, p_tcb)
177
178 #define LOG_SYSLOG_WRI_LOG_ENTER(prio, p_syslog) \
179                                                                 trace_wri_log((TRACE *) p_syslog)
180
181 #endif /* TOPPERS_TRACE_CONFIG_H */