Cambios recientes

2012-03-13

Últimos archivo liberados

This Project Has Not Released Any Files

Wiki Guide

Sidebar

1. RBTOS の使い方

T.B.D.

2. API リファレンス

2.1 スレッド制御関数


RBTOS_Thread_create - スレッド生成

  1. RBTOS_ThreadT *RBTOS_Thread_create(RBTOS_ThreadT *pnew,
  2. void (*func)(void *),
  3. void *arg,
  4. unsigned char pri,
  5. void *stack,
  6. unsigned stacksize,
  7. const char *threadname)

スレッドを生成して開始します。

生成したスレッドの優先度が,カレントスレッドより高い場合,生成したスレッドは即座に実行権を獲得します。

そうでない場合,生成したスレッドは,そのスレッド優先度の実行待機リストの最後尾に置かれます。

引数

  • pnew - RBTOS_Thread_T *
    生成するスレッドのコンテキストのためのメモリ領域を指定します。
    メモリ領域のサイズは sizeof(RBTOS ThreadT) が必要です。
    メモリ領域の内容は不定でかまいません。
  • func - void (*)(void *)
    生成したスレッドで実行する関数を指定します。
  • arg - void *
    func に渡す引数を指定します。
  • pri - unsigned char
    スレッド優先度を指定します。
    指定可能な値の範囲は 0 ~ (RBTOS_CONF_NUM_PRIORITIES - 1) です。
    それ以外の値を指定した場合の動作は不定です。
  • stack - void *
    生成するスレッドのためのスタック領域を指定します。
    スタック領域のアドレスは,16 ビット境界に配置されていなければなりません。
  • stacksize - unsigned
    スタック領域のバイト数を指定します。
  • threadname - const char *
    スレッド名を指定します。
    このポインタが示す文字列は,スレッドが終了するまで存続しなければなりません。

戻り値 - RBTOS_Thread_T *

生成したスレッドのコンテキストへのポインタを返却します。 これは,pnew と同じ値です。


RBTOS_Thread_sleep - スレッド休止

  1. void RBTOS_Thread_sleep(unsigned long ticks)

カレントスレッドを指定ティック期間,休止させます。

指定ティック期間(ticks 引数)を 0 にした場合,スレッド実行権の委譲のみを行います。

そうでなく,ティック期間に0以外を指定した場合,カレントスレッドは休止状態に遷移します。

休止状態に遷移したスレッドは,その後,指定ティックの経過によって,実行状態,または実行待機状態に遷移します。

引数

  • ticks - unsigned long
    休止させる期間をティック値で指定します。 指定可能な数値の範囲は,0~0xFFFFFFFFUL です。

2.2 ロック制御関数


RBTOS_Lock_create - ロック生成

  1. static inline void RBTOS_Lock_create(RBTOS_LockT *pNewLock)

ロックを生成します。

引数

  • pNewLock - RBTOS_LockT *
    生成するロックのコンテキストのためのメモリ領域を指定します。

参考

以下のように記述することで,静的に存在するロックコンテキストを作成できます。

  1. RBTOS_LockT lockRX = RBTOS_INITIALIZED_LOCK_VALUE;


RBTOS_Lock_enter - ロック取得

  1. void RBTOS_Lock_enter(RBTOS_LockT *lock)

ロックの取得を試みます。

すでに他のスレッドがロックを取得している場合,ロック待ちリストの最後尾に自スレッドを追加します。 そして,ロックが取得できるまで自タスクの実行を停止します。

そうでなく,ロックを取得しているスレッドが存在しない場合,カレントスレッドはロックを取得し,すぐにリターンします。

また,カレントスレッドですでにロックを取得している場合,多重ロックとなります。 その場合,ロックカウントをインクリメントし,すぐにリターンします。

多重ロックした場合,ロックの解放には,RBTOS_Lock_leave() を多重ロックした回数回実行する必要があります。

引数

  • lock - RBTOS_LockT *
    対象とするロックコンテキストへのポインタ。

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 ステータスレジスタ設定

Últimos archivo liberados

This Project Has Not Released Any Files

Recent Tickets

(empty)