

#include <nitro/os.h>BOOL OS_CheckFunctionCostBuffer( void* buf );
| buf | 関数コスト計測用バッファ |
バッファの最上位が書き換えられていれば FALSE を返します。
そうでなければ TRUE を返します。
関数コスト計測バッファの最上位が書き換えられているかを調べます。
すなわち、関数コスト計測バッファが一杯まで使用されたかを調べます。
関数コスト計測バッファは、関数を呼び出す度に消費されていきます。一杯になるとそれ以上関数呼び出しの記録をつけることをやめるだけで、エラー表示を行ったりプログラムが停止するということはありません。
それを検知する仕組みは次の通りです。バッファの最上位にチェックコードを書き込んでおきます。そのコードが他の値で書き潰されていないかを調べます。他の値が書き込まれている場合、バッファがそこまで使用されたという可能性が非常に高いということになります。ただし、ここでわかるのは、その領域が使用された、ということであり、いつその領域に値が書き込まれたかはわかりません。
チェックコードが書き込まれるのは以下の時です。 OS_InitFunctionCostBuffer() を読んだとき。OS_CalcStatistics() 及び OS_CalcThreadStatistics() によって計測バッファの内容が集計バッファに反映された時。OS_ClearFunctionCostBuffer() でバッファを破棄した時。
この関数はデバッグ用の関数ですので、最終ROM版(FINALROM)ライブラリでは単にTRUEを返す関数となります。
なお、関数コスト計測バッファではなく、関数コスト集計バッファのチェックには
OS_CheckStatisticsBuffer() が用意されています。
OS_InitFunctionCostBuffer, OS_CheckStatisticsBuffer, OS_CalcStatistics, OS_CalcThreadStatistics, OS_ClearFunctionCostBuffer
2006/08/24 初版