全体の構成と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 |
メッセージの長さを取得 |