割り込みハンドラ実行時間取得API

GICでの割り込み番号単位で割り込みハンドラの総実行時間、最長/最短実行時間、総起動回数を取得するAPIです。 SOLID Coreサービスレベルの機能なので、TOPPERSカーネル管理外の割り込みについても計測可能です。

ソリューションプロパティ

割り込みハンドラ実行時間取得 API を使用するには、コンパイルオプションで "BasicGCCSW" の定義に、"-DSOLID_DIAG_INTC_STAT" を定義します

定義の例

../../_images/SOLID_DIAG_INTC_STAT.props.png

注釈

割り込み番号の最大値をデフォルトの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 -- 値を取得したい割り込みの割り込み番号

戻り値:

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

積算実行時間 (システムタイマのクロック数単位)

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_TIMER_ToUsec() を使用してください。