イベントフラググループの習得:Nucleus RTOS/SEのユーティリティサービスとデータ構造
RTOS Revealedシリーズを表示
この記事ではイベントフラググループについての解説を続けます。
イベントフラググループユーティリティサービス
Nucleus RTOSは、イベントフラググループとのやり取りを効率化する3つの専用API呼び出しを提供します:グループ詳細情報の取得、グループ総数の取得、アプリケーション内のすべてのグループへのポインタ取得。最初の2機能はNucleus SEで完全サポートされています。
イベントフラググループ情報
このサービスコールは指定されたイベントフラググループの主要データを提供します。Nucleus SEではインターフェースが簡略化され、オブジェクト命名とサスペンド順序が省略され、タスクサスペンド情報は機能有効時のみ返されます。
Nucleus RTOSのイベントグループ情報API呼び出し
サービスコールプロトタイプ:
STATUS NU_Event_Group_Information(NU_EVENT_GROUP *group,
CHAR *name, UNSIGNED *event_flags, UNSIGNED *tasks_waiting,
NU_TASK **first_task);
パラメータ:
group – ユーザー提供のイベントフラググループ制御ブロックへのポインタ
name – グループ名用の8文字バッファ(null終端含む)
event_flags – 現在のフラグ値を受け取る変数へのポインタ
tasks_waiting – このグループでサスペンドしているタスク数を受け取る変数へのポインタ
first_task – 最初のサスペンドタスクへのポインタを受け取るNU_TASK変数へのポインタ
戻り値:
NU_SUCCESS – 呼び出し正常完了
NU_INVALID_GROUP – 提供されたグループポインタが無効
Nucleus SEのイベントグループ情報API呼び出し
このAPIはRTOS版と同等のコア機能を提供します。
サービスコールプロトタイプ:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group,
U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
パラメータ:
group – イベントフラググループのインデックス
event_flags – 現在のフラグ値を受け取るポインタ
tasks_waiting – サスペンドタスク数を受け取るポインタ(タスクサスペンド無効時は0)
first_task – 最初のサスペンドタスクのインデックスを受け取るポインタ(タスクサスペンド無効時は0)
戻り値:
NUSE_SUCCESS – 呼び出し正常完了
NUSE_INVALID_GROUP – グループインデックスが無効
Nucleus SEのイベントグループ情報実装
実装はシンプル:現在のフラグ値を読み取り、ブロッキングAPI有効時は待機タスク数と最初のタスクインデックスを計算、無効時は両方を0に設定。
*event_flags = NUSE_Event_Group_Data[group];#if NUSE_BLOCKING_ENABLE *tasks_waiting = NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] != 0) { U8 index; for (index=0; index
イベントフラググループ数の取得
Nucleus RTOSではグループ数は動的に変化可能;呼び出しは現在のカウントを返します。Nucleus SEではビルド時に固定。
Nucleus RTOSのイベントフラググループカウントAPI呼び出し
サービスコールプロトタイプ:
UNSIGNED NU_Established_Event_Groups(VOID);
戻り値:
アプリケーション内の現在の作成済みイベントフラググループ数
Nucleus SEのイベントフラググループカウントAPI呼び出し
サービスコールプロトタイプ:
U8 NUSE_Event_Group_Count(void);
戻り値:
アプリケーションで設定されたイベントフラググループ数
Nucleus SEのイベントフラググループカウント実装
関数は単にコンパイル時定数NUSE_EVENT_GROUP_NUMBERの値を返します。
埋め込み
- C++構造体とクラス:組み込み開発者のための実践ガイド
- Nucleus SEのメールボックス:設定と使用の実践ガイド
- Nucleus RTOSのセマフォ:ユーティリティサービスとデータ構造
- Nucleus SEのセマフォ:概要、設定、API要点
- Nucleus SEのイベントフラググループ:設定とAPI使用の入門ガイド
- Nucleus SEのキュー:導入とコアサービスコール
- Apacer、グローバル展開CV110-SD & CV110-MSD高性能フラッシュカードを発表
- OpenHW Group、オープンソースプロセッサーコアCORE-Vファミリを発表
- Swissbit、it-saでIoTデバイス向け最先端ハードウェアセキュリティを展示
- クラウド vs オンプレミスサーバー:最適なホスティングソリューションの選び方
- Microsoft Azureがブロックチェーン・トークン化とデータ管理サービスを発表