全体の構成とAPI
リアルタイムOSの勉強のために作成したフレームワークです。タスクが移り行く様はなかなかおもしろかった。
Over view
全体の構成図を下記に示す。1つのモジュールは1つの初期化ルーチンと1つ以上のタスクを持つ。各タスクの同期はOSが仲介する。

API
- タスク制御と時間管理に関するAPI
| 名称 | 処理内容 |
|---|---|
| init_os | OSの初期化 |
| task_main | メインルーチン無限ループ |
| create_tcb | ユーザタスクを登録するTCBを作成 |
| start_task | タスクを実行待ちリストに登録する |
| start_task_i | 割込みルーチン用のstart_task処理 |
| exit_task | タスクを終了するTCBを解放 |
| exit_task_i | 割込みルーチン用のexit_task処理 |
| get_trg | 状態遷移した理由を取得 |
| delay_task | 実行を指定時間だけ中断する |
| set_timeout | 実行を指定時間だけ中断する(delay_taskと同じ) |
| clear_timeout | 中断後の再開をキャンセルする |
| timer_1ms_int | 1ms周期タイマ割込みで行う処理(タイムアウト判定) |
| slice_task | 実行を中断しCPUを解放する |
| set_next_state | 次の状態遷移変数値を設定 |
- イベントフラグに関するAPI
| 名称 | 処理内容 |
|---|---|
| create_flag | イベントフラグFLAGを作成 |
| set_flag | イベントが発生する(フラグがTRUE)まで待つ |
| set_flag_i | イベントを発生(フラグをTRUEに設定) |
| clear_flag | 割込みルーチン用のset_flag処理 |
| clear_flag_i | イベントを消去(フラグをFALSEに設定) |
| wait_flag | 割込みルーチン用のclear_flag処理 |
- セマフォに関するAPI
| 名称 | 処理内容 |
|---|---|
| create_sem | セマフォSEMを作成 |
| signal_sem | セマフォwait動作(リソースが空くまで待つ) |
| wait_sem | セマフォにsignal動作(リソースを1つ解放する) |
- メールボックスに関するAPI
| 名称 | 処理内容 |
|---|---|
| create_mbx | メールボックスMBXを作成 |
| send_msg | メールボックスにメッセージが受信されるまで待つ |
| send_msg_i | メールボックスにメッセージを送信 |
| wait_msg | 割込みルーチン用のsend_msg処理 |
| get_msg | メッセージを取得 |
| get_msglen | メッセージの長さを取得 |