1. RBTOS の使い方T.B.D. 2. API リファレンス2.1 スレッド制御関数RBTOS_Thread_create - スレッド生成RBTOS_ThreadT *RBTOS_Thread_create(RBTOS_ThreadT *pnew,
void (*func)(void *),
void *arg,
unsigned char pri,
void *stack,
unsigned stacksize,
const char *threadname)
スレッドを生成して開始します。 生成したスレッドの優先度が,カレントスレッドより高い場合,生成したスレッドは即座に実行権を獲得します。 そうでない場合,生成したスレッドは,そのスレッド優先度の実行待機リストの最後尾に置かれます。 引数
戻り値 - RBTOS_Thread_T *生成したスレッドのコンテキストへのポインタを返却します。 これは,pnew と同じ値です。 RBTOS_Thread_sleep - スレッド休止void RBTOS_Thread_sleep(unsigned long ticks) カレントスレッドを指定ティック期間,休止させます。 指定ティック期間(ticks 引数)を 0 にした場合,スレッド実行権の委譲のみを行います。 そうでなく,ティック期間に0以外を指定した場合,カレントスレッドは休止状態に遷移します。 休止状態に遷移したスレッドは,その後,指定ティックの経過によって,実行状態,または実行待機状態に遷移します。 引数
2.2 ロック制御関数RBTOS_Lock_create - ロック生成static inline void RBTOS_Lock_create(RBTOS_LockT *pNewLock) ロックを生成します。 引数
参考以下のように記述することで,静的に存在するロックコンテキストを作成できます。 RBTOS_LockT lockRX = RBTOS_INITIALIZED_LOCK_VALUE; RBTOS_Lock_enter - ロック取得void RBTOS_Lock_enter(RBTOS_LockT *lock) ロックの取得を試みます。 すでに他のスレッドがロックを取得している場合,ロック待ちリストの最後尾に自スレッドを追加します。 そして,ロックが取得できるまで自タスクの実行を停止します。 そうでなく,ロックを取得しているスレッドが存在しない場合,カレントスレッドはロックを取得し,すぐにリターンします。 また,カレントスレッドですでにロックを取得している場合,多重ロックとなります。 その場合,ロックカウントをインクリメントし,すぐにリターンします。 多重ロックした場合,ロックの解放には,RBTOS_Lock_leave() を多重ロックした回数回実行する必要があります。 引数
RBTOS_Lock_leave - ロック解放2.3 イベント制御関数RBTOS_Event_create - イベント生成RBTOS_Event_wait - イベント待ちRBTOS_Event_set - イベント通知iRBTOS_Event_set - 割込からのイベント通知2.4 その他RBTOS_initialize - RBTOS 初期化RBTOS_disable - OS の割込禁止RBTEOS_set_imask - CPU ステータスレジスタ設定 |