# OS_InitFunctionCost

## 構文

  `#include <nitro/os.h>`
  `void OS_InitFunctionCost( void* buf, u32 size );`

## 引数

buf | 関数コスト計測用バッファ
size | 関数コスト計測用バッファサイズ

## 返り値

なし。

## 説明

関数コスト計測のためのバッファを設定し、関数コスト計測を開始します。
この関数を呼んで、関数コスト計測の設定がされたあと、計測状態はEnableになっています。( `OS_EnableFunctionCost()` を呼んだ状態になっています。)

計測される関数は、profile機能をオンにしてコンパイルされている必要があります。( TWL_PROFILE を TRUE にしてコンパイルすると コンパイル時に -profile オプションが付き、profile機能がオンになります。)

また、関数コスト計測関連の機能を有効にするためには、リンク時に libos.FUNCTIONCOST.a (thumb 版なら libos.FUNCTIONCOST.thumb.a ) を含む必要があります。これは make のオプションに TWL_PROFILE_TYPE=FUNCTIONCOST を指定することにより行ないます。Makefile の中に書いても有効です。ただし最終ROM版(FINALROM)ライブラリでは何も動作を行ないません。

バッファ buf には、先頭部分に関数コスト計測のための情報ヘッダ`sizeof(OSFunctionCostInfo) - sizeof(OSFunctionCost)` バイト)が格納され、残りに計測情報が書き込まれていきます。関数が呼び出されたときに格納される情報の大きさは `sizeof(OSFunctionCost)` バイトです。

スレッドシステムを使用している場合、各スレッドでバッファは独立していますので、コスト計測を格納したい場合はそれぞれのスレッドでそれぞれ異なるバッファを定義しなければなりません。

計測の結果を集計して表示するには`OS_CalcStatistics()` あるいは `OS_CalcThreadStatistics()` で集計の上、`OS_DumpStatistics()` を呼んでください。

## 参照

`OS_CalcStatistics, OS_CalcThreadStatics, OS_DumpStatistics
`

## 履歴

2004/06/02 Make オプションの記述変更
2004/05/18 初版