Windows版iTRONサービスコールの作成 (固定長メモリプール)
(その6)

固定長メモリプールの状態を参照する

固定長メモリプールの状態を参照するサービスコールは以下のとおりです。


サービスコール名説明
ref_mpf

固定長メモリプールの状態を取得します。

Ver3.0と4.0では関数名は同じですが、引数の順番が逆になりますので注意してください。

固定長メモリプールの状態を取得する (Ver3.0)

Ver3.0で固定長メモリプールの状態を取得するには以下のサービスコールを使用します。



    ER ref_mpf( T_RMPF *pk_rmpf, ID mpfid )
	

引数説明
pk_rmpf

固定長メモリプール状態を格納する構造体のポインタ。

mpfid

メモリプールID番号。

戻り値説明
E_OK

正常終了。

E_ID

範囲外のメモリプールID番号。

E_NOEXS

指定したメモリプールID番号は登録されていない。

E_PAR

パラメータエラー。


固定長メモリプール状態を格納する構造体(T_RMPF)は以下のとおりです。

メンバ名説明
exinf拡張情報。
wtsk待ちタスクの有無。
frbcnt空きメモリブロックの個数。


・サービスコールのソースコードは以下のようになります。


/****************************************************************************/
/*!
 *  @brief  固定長メモリプールの参照.
 *
 *  @param  [out]   pk_rmpf メモリプール状態を格納する構造体のポインタ.
 *  @param  [in]    mpfid   メモリプールID番号.
 *
 *  @retval エラーコード.
 */
ER      ref_mpf( T_RMPF *pk_rmpf, ID mpfid )
{
    ER          ercd;
    WIMPFSTAT   sts;

    //! 引数が不正な場合はエラーにする.
    if( !pk_rmpf ){
        return E_PAR;
    }
    wi_CommonLock();

    //! 固定長メモリプールの状態を取得する.
    ercd = wi_RefarenceFixedMemPool( mpfid, &sts );
    if( ercd == E_OK ){
        pk_rmpf->exinf  = sts.ExtInfo;
        pk_rmpf->wtsk   = (BOOL_ID)sts.WaitId;
        pk_rmpf->frbcnt = sts.FreeBlock;
    }
    wi_CommonUnlock();
    return ercd;
}
	

固定長メモリプール状態を格納する構造体のポインタがNULLの場合エラーにします。

固定長メモリプール状態を取得する関数を呼び出して現在の固定長メモリプールの状態を取得し引数の構造体に格納します。

固定長メモリプールの状態を取得する (Ver4.0)

Ver4.0で固定長メモリプールの状態を取得するには以下のサービスコールを使用します。



    ER ref_mpf( ID mpfid, T_RMPF *pk_rmpf )
	

引数説明
mpfid

メモリプールID番号。

pk_rmpf

固定長メモリプール状態を格納する構造体のポインタ。

戻り値説明
E_OK

正常終了。

E_ID

範囲外のメモリプールID番号。

E_NOEXS

指定したメモリプールID番号は登録されていない。

E_PAR

パラメータエラー。


固定長メモリプール状態を格納する構造体(T_RMPF)は以下のとおりです。

メンバ名説明
wtskidセマフォ待ち行列の先頭のタスクのID番号。
fblkcnt空きメモリブロックの個数。


・サービスコールのソースコードは以下のようになります。


/****************************************************************************/
/*!
 *  @brief  固定長メモリプールの参照.
 *
 *  @param  [in]    mpfid   メモリプールID番号.
 *  @param  [out]   pk_rmpf メモリプール状態を格納する構造体のポインタ.
 *
 *  @retval エラーコード.
 */
ER      ref_mpf( ID mpfid , T_RMPF *pk_rmpf )
{
    ER          ercd;
    WIMPFSTAT   sts;

    //! 引数が不正な場合はエラーにする.
    if( !pk_rmpf ){
        return E_PAR;
    }
    wi_CommonLock();

    //! 固定長メモリプールの状態を取得する.
    ercd = wi_RefarenceFixedMemPool( mpfid, &sts );
    if( ercd == E_OK ){
        pk_rmpf->wtskid  = sts.WaitId;
        pk_rmpf->fblkcnt = sts.FreeBlock;
    }
    wi_CommonUnlock();
    return ercd;
}
	

固定長メモリプール状態を格納する構造体のポインタがNULLの場合エラーにします。

固定長メモリプール状態を取得する関数を呼び出して現在の固定長メモリプールの状態を取得し引数の構造体に格納します。

固定長メモリプールの状態取得関数

固定長メモリプールの状態を取得する関数のソースコードは以下のとおりです。



/****************************************************************************/
/*!
 *  @brief  固定長メモリプールの参照.
 *
 *  @param  [in]    id      メモリプールID番号.
 *  @param  [out]   sts     メモリプール状態を格納する構造体のポインタ.
 *
 *  @retval エラーコード.
 */
ER      wi_RefarenceFixedMemPool( INT id, WIMPFSTAT *sts )
{
    ER          ercd;
    WIMPFOBJ    *p;
    WIHDR       *ptr;
    INT         cnt;

    //! メモリプールIDのオブジェクトを取得する.
    p = (WIMPFOBJ *)wi_FindObject( id, TMAX_MAXMPF, ObjList, &ercd );
    if( !p ){
        return ercd;
    }
    //! 未使用のメモリブロック数をカウントする.
    cnt = 0;
    ptr = p->FreeQue;
    while( ptr ){
        ptr = ptr->Next;
        cnt++;
    }
    //! 固定長メモリプールの状態を構造体にセットする.
    sts->WaitId    = wi_GetWaitTaskListFirstId( p->WaitQue );
    sts->FreeBlock = cnt;
    sts->ExtInfo   = p->ExtInfo;

    return E_OK;
}
	

固定長メモリプールの状態を取得する関数は以下のような処理を行います。

  • 引数で指定された固定長メモリプールID番号に該当する固定長メモリプール・オブジェクトを取り出します。
  • メモリブロック獲得待ち行列から先頭のタスクのID番号を取り出して、引数の構造体にセットします。
  • 未使用のメモリブロックの個数をカウントして引数の構造体にセットします。
  • cre_mpf()で固定長メモリプールを生成するときに渡された拡張情報を引数の構造体にセットします。(Ver4.0の場合は常に0を返します。)

ソフトウェアのご案内

GATTTerm

BLE の GATT規格対応デバイスと通信するためのソフト。

MemMoni

組み込み機器のメモリダンプ機能を利用して組み込み機器内のメモリの内容を周期的にモニタするツール。

MouseRepeater

マウス操作とキー操作を記録して、記録したマウス操作とキー操作を自動で再現するツール。

Wav録! (サウンドレコーダー)

他のアプリの音源の録音や、再生中のオーディオ音源と重ね録りができるアプリケーション。

Pseudo Terminal

通信相手とのコマンドの送受信を疑似的に代行するアプリケーション。

Re:サンプル

WAV形式の音声ファイルのサンプリング周波数を変換するツール。

RTPパケット簡易解析ツール

「wireshark」等でキャプチャした通信パケットからRTPパケットを解析し、その内容を表示するアプリ。

ToneMaker

DTMF音やキータッチ音などの短いトーン音源データを生成するアプリケーション。

HTTP POSTer

HTTPリクエストメッセージ中の内容を自由に設定してHTTPサーバーにリクエスト。

MQTT Monitor

MQTT通信のクライアント(Publisher/Sbscriber)アプリケーション。

DHCPOpt

DHCPのオプション文字列を自由に設定できるデバッグ用のDHCPサーバー。

Multi Port Terminal 2

RS232C,パラレル,TCP/IP,USBに対応したターミナルソフト。

MPEG-PSストリーム簡易解析ツール

MPEG-PS形式のファイルをパケット単位で解析。

デル株式会社
サイバーリンク
オリジナル商品 挑戦者「VULKANO FLOW」
上新電機 パソコン買取サービス



商標に関する表示