割り込みハンドラ実行時間取得API
GICでの割り込み番号単位で割り込みハンドラの総実行時間、最長/最短実行時間、総起動回数を取得するAPIです。 SOLID Coreサービスレベルの機能なので、TOPPERSカーネル管理外の割り込みについても計測可能です。
ソリューションプロパティ
割り込みハンドラ実行時間取得 API を使用するには、コンパイルオプションで "BasicGCCSW" の定義に、"-DSOLID_DIAG_INTC_STAT" を定義します
定義の例
注釈
割り込み番号の最大値をデフォルトの1024から変更したい場合は、コンパイルオプションで "BasicGCCSW" の定義に、"-DSOLID_DIAG_INTC_STATS_MAX=512" という ように割り込み番号の最大値を定義してください
API
APIを使用するコードでは solid_diag.h
をインクルードしてください。
#include "solid_diag.h"
SOLID_DIAG_ControlInterruptStats
-
int SOLID_DIAG_ControlInterruptStats(int action)
計測の開始/停止、取得データのリセットを制御する関数です。
- パラメータ
irq -- 値を取得したい割り込みの割り込み番号
- 戻り値
SOLID_ERR_OK
: 正常終了SOLID_ERR_PAR
: action の値が間違っている
ACTION に指定する値の定義
#define SOLID_DIAG_INTC_STATS_ACTION_START (0) // 計測開始 #define SOLID_DIAG_INTC_STATS_ACTION_STOP (1) // 計測停止 #define SOLID_DIAG_INTC_STATS_ACTION_RESET (2) // 計測済み実行時間データの再初期化
SOLID_DIAG_INTSTATS_INFO
-
struct SOLID_DIAG_INTSTATS_INFO
説明
割り込みハンドラ実行時間および起動回数のデータ構造体
定義
typedef struct { uint64_t count; uint64_t min; uint64_t max; uint64_t sum; } SOLID_DIAG_INTSTATS_INFO;
メンバー
-
uint64_t count
割り込みハンドラ起動回数
-
uint64_t min
実行時間の最小値 (システムタイマのクロック数単位)
-
uint64_t max
実行時間の最大値 (システムタイマのクロック数単位)
-
uint64_t sum
積算実行時間 (システムタイマのクロック数単位)
-
uint64_t count
SOLID_DIAG_GetInterruptStats
-
int SOLID_DIAG_GetInterruptStats(int cpuId, int intNo, SOLID_DIAG_INTSTATS_INFO *pInfo)
割り込みハンドラの割り込みハンドラ実行時間および呼び出し回数を取得します
- パラメータ
cpuId -- CPUコアの番号
intNo -- 割り込み番号
pInfo -- 値を受け取る SOLID_DIAG_INTSTAT_INFO 構造体へのポインタ
- 戻り値
SOLID_ERR_OK
: 正常終了SOLID_ERR_PAR
: 不正パラメータ
注釈
各実行時間は、システムタイマのクロック数単位で計測されますので、μ秒単位に 変換するには SOLID_TIMER_ToUsec() を使用してください。