適用先: RealView リアルタイム ライブラリ
この記事に含まれている情報の適用先:
- RL-ARM バージョン 3
- MDK-ARM バージョン 3
- ARTX166 の全バージョン
質問
RTX カーネルではバイナリ セマフォはサポートされていますか?
一部の RTOS ではセマフォの取得コマンドと解放コマンドもサポートされていますが、 RTX カーネルではどうでしょうか?
回答
RTX カーネルでは、計数セマフォがサポートされています。 バイナリ セマフォは、1 ビットのみを使用する簡易版の計数セマフォです。 したがって、単純にバイナリ セマフォを計数セマフォに置き換えることができます。
以下に例を示します。
os_sem_init (semaphore1, 1);
void protected_io (void) {
os_sem_wait (semaphore1, 0xFFFF); // get the token
// Read or write to shared resource...
.
.
.
os_sem_send (semaphore1); // give the token back
}
セマフォの "取得" および "解放" は、以下に示すように、 そのままバイナリ セマフォに対応付けることができます。
os_sem_wait (semaphore1, 0xffff); // equivalent to acquire
os_sem_send (semaphore1); // equivalent to release
詳細
- RL-ARM User's Guide の Semaphore Management Routines を参照してください。
関連項目
- GENERAL: WHAT ARE SEMAPHORES?