パーティションメモリ:ユーティリティサービスとデータ構造
RTOSRevealedシリーズを表示する
この記事では、RTOSパーティションメモリについて引き続き説明します。
パーティションプールユーティリティサービス
Nucleus RTOSには、パーティションプールに関連付けられたユーティリティ関数を提供する3つのAPI呼び出しがあります。パーティションプールに関する情報を返し、アプリケーション内のパーティションプールの数を返し、アプリケーション内のすべてのパーティションプールへのポインターを返します。これらの最初の2つはNucleusSEに実装されています。
パーティションプール情報の取得
このサービス呼び出しは、パーティションプールに関する情報の選択を取得します。 NucleusSEの実装はNucleusRTOSとは異なり、オブジェクトの命名とサスペンドの順序がサポートされておらず、タスクのサスペンドが有効になっていない可能性があるため、返される情報が少なくなります。
Nucleus RTOSAPIによるパーティションプール情報の呼び出し
サービスコールプロトタイプ:
STATUS NU_Partition_Pool_Information(NU_PARTITION_POOL * pool、CHAR * name、VOID ** start_address、UNSIGNED * pool_size、UNSIGNED * partition_size、UNSIGNED * available、UNSIGNED * alllocated、OPTION * suspend_type、UNSIGNED * tasks_waiting、NU_TASK ** first_task); / strong>
パラメータ:
プール –情報が要求されているパーティションプールへのポインタ
名前 –パーティションプールの名前の8文字の宛先領域へのポインタ。これには、ヌルターミネータ用のスペースが含まれます。
start_address –変数へのポインター。これは、パーティション・プール・データ域の開始へのポインターを受け取ります
pool_size –パーティションプールのサイズ(バイト単位)を受け取る変数へのポインター
partition_size –このプール内のパーティションのサイズを受け取る変数へのポインター
利用可能 –このプールで現在使用可能なパーティションの数を受け取る変数へのポインター
割り当て済み –このプールで現在使用されているパーティションの数を受け取る変数へのポインター
suspend_type –タスクサスペンドタイプを保持するための変数へのポインター。有効なタスクサスペンドタイプは NU_FIFO および NU_PRIORITY 。
tasks_waiting –このパーティションプールで一時停止されているタスクの数を受け取る変数へのポインター
first_task –最初に中断されたタスクのポインターが配置されるタスクポインターへのポインター
返品:
NU_SUCCESS –通話は正常に完了しました
NU_INVALID_POOL –パーティションプールポインタが無効です
Nucleus SEAPIによるパーティションプール情報の呼び出し
このAPI呼び出しは、Nucleus RTOSAPIの主要な機能をサポートしています。
サービスコールプロトタイプ:
STATUS NUSE_Partition_Pool_Information(NUSE_PARTITION_POOL pool、ADDR * start_address、U32 * pool_size、U16 * partition_size、U8 * available、U8 * alllocated、U8 * tasks_waiting、NUSE_TASK * first_task)
パラメータ:
プール –情報が要求されているパーティションプールのインデックス
start_address –変数へのポインター。これは、パーティション・プール・データ域の開始へのポインターを受け取ります
pool_size –パーティションプールのサイズ(バイト単位)を受け取る変数へのポインター
partition_size –このプール内のパーティションのサイズを受け取る変数へのポインター
利用可能 –このプールで現在使用可能なパーティションの数を受け取る変数へのポインター
割り当て済み –このプールで現在使用されているパーティションの数を受け取る変数へのポインター
tasks_waiting –このパーティションプールで一時停止されているタスクの数を受け取る変数へのポインター(タスクの一時停止が無効になっている場合は何も返されません)
first_task –タイプ NUSE_TASK の変数へのポインター これは最初に中断されたタスクのインデックスを受け取ります(タスクの中断が無効になっている場合は何も返されません)
返品:
NUSE_SUCCESS –通話は正常に完了しました
NUSE_INVALID_POOL –パーティションプールインデックスが無効です
NUSE_INVALID_POINTER –1つ以上のポインターパラメーターが無効です
NucleusSEによるパーティションプール情報の実装
このAPI呼び出しの実装は非常に簡単です:
この関数は、パーティションプールのステータスを返します。次に、API呼び出しのブロックが有効になっている場合、待機中のタスクの数と最初のタスクのインデックスが返されます(それ以外の場合、これら2つのパラメーターは0に設定されます)。
パーティションプールの数の取得
このサービス呼び出しは、アプリケーションで構成されているパーティションプールの数を返します。 Nucleus RTOSではこれは時間とともに変化し、戻り値は現在のプール数を表しますが、Nucleus SEでは、返される値はビルド時に設定され、変更できません。
Nucleus RTOSAPIによるパーティションプールの数の呼び出し
このAPI呼び出しは、Nucleus RTOSAPIの主要な機能をサポートしています。
サービスコールプロトタイプ:
UNSIGNED NU_Established_Partition_Pools(VOID);
パラメータ:
なし
返品:
アプリケーションで作成されたパーティションプールの数
Nucleus SEAPIによるパーティションプールの数の呼び出し
このAPI呼び出しは、Nucleus RTOSAPIの主要な機能をサポートしています。
サービスコールプロトタイプ:
U8 NUSE_Partition_Pool_Count(void);
パラメータ:
なし
返品:
アプリケーションで構成されているパーティションプールの数
実装
このAPI呼び出しの実装は、ほとんど簡単です。 #define の値です。 シンボル NUSE_PARTITION_POOL_NUMBER 返されます。
埋め込み