/* * トレースログの書込み */ ER trace_wri_log(TRACE *p_trace) { SIL_PRE_LOC; if (trace_mode != TRACE_STOP) { SIL_LOC_INT(); /* * トレース時刻の設定 * * LOG_WRI_LOG_ENTERから呼ばれた場合にp_trace->logtimを書き換 * えてしまうのは気持ちが悪いが,wri_logの方で上書きするため問 * 題はない. */ p_trace->logtim = TRACE_GET_TIM(); /* * トレースバッファに記録 */ trace_buffer[trace_tail] = *p_trace; trace_tail++; if (trace_tail >= TCNT_TRACE_BUFFER) { trace_tail = 0U; } if (trace_count < TCNT_TRACE_BUFFER) { trace_count++; if (trace_count >= TCNT_TRACE_BUFFER && (trace_mode & TRACE_AUTOSTOP) != 0U) { trace_mode = TRACE_STOP; } } else { trace_head = trace_tail; } SIL_UNL_INT(); } return(E_OK); }
/* * write trace log */ ER trace_wri_log(TRACE *p_trace) { SIL_PRE_LOC; if (trace_mode != TRACE_STOP) { SIL_LOC_INT(); /* * record log time */ p_trace->logtim = TRACE_GET_TIM(); /* * write into the buffer */ trace_buffer[trace_tail] = *p_trace; trace_tail++; if (trace_tail >= TCNT_TRACE_BUFFER) { trace_tail = 0U; } if (trace_count < TCNT_TRACE_BUFFER) { trace_count++; if (trace_count >= TCNT_TRACE_BUFFER && (trace_mode & TRACE_AUTOSTOP) != 0U) { trace_mode = TRACE_STOP; } } else { trace_head = trace_tail; } SIL_UNL_INT(); } return(E_OK); }