リアルタイムふうOS

5月の連休の時、小規模な電子工作で使うリアルタイムふうなOSを作成した。
備忘録代わりに右にまとめた。「リアルタイムふうOS
いくつかの装置に利用したが今のところもくろみ通りに動作している。かといって細かいデバッグはしていない。

APIのプロトタイプ宣言を下記に示す。

/* Queueの初期化 割込禁止 */
void init_os( void );
/* メインルーチン */
void task_main( void );
/* TCB生成 割込禁止 */
tcb_type *create_tcb( void (*task)( byte state ));
/* メールボックス生成 割込禁止 */
mbx_type *create_mbx( char *msg_buff, byte size );
/* イベントフラグ生成 割込禁止 */
flag_type *create_flag( void );
/* セマフォ生成 */
sem_type *create_sem( byte size );
/* タスク起床 */
void start_task( tcb_type *tcb );
/* タスク起床 割込禁止 */
void start_task_i( tcb_type *tcb );
/* タスク終了とTCB解放 */
void exit_task( tcb_type *tcb );
/* タスク終了とTCB解放 割込禁止 */
void exit_task_i( tcb_type *tcb );
/* 起床事由の取得 */
byte get_trg( tcb_type *tcb );
/* 遅延遷移 */
void delay_task( tcb_type *tcb, word time );
/* タイムアウト設定 */
void set_timeout( tcb_type *tcb, word time );
/* タイムアウト解除 */
void clear_timeout( tcb_type *tcb );
/* 1msタイマ割込み 割込禁止 */
void timer_1ms_int( void );
/* メールボックスにメッセージ登録 */
byte send_msg( char *msg, byte len, mbx_type *mbx );
/* メールボックスにメッセージ登録 割込禁止 */
byte send_msg_i( char *msg, byte len, mbx_type *mbx );
/* メールボックスからメッセージ待ち */
void wait_msg( mbx_type *mbx, tcb_type *tcb );
/* メールボックスからメッセージポインタ取得 */
char *get_msg( mbx_type *mbx );
/* メールボックスからメッセージ長さ取得 */
byte get_msglen( mbx_type *mbx );
/* イベントフラグをセット */
void set_flag( flag_type *flag );
/* イベントフラグをセット 割込禁止 */
void set_flag_i( flag_type *flag );
/* メールボックスクリア */
void clear_msg( mbx_type *mbx );
/* イベントフラグをクリア */
void clear_flag( flag_type *flag );
/* イベントフラグをクリア 割込禁止 */
void clear_flag_i( flag_type *flag );
/* イベントフラグ待ち */
void wait_flag( flag_type *flag, tcb_type *tcb );
/* セマフォひとつ解放 */
void signal_sem( sem_type *sem );
/* セマフォで空き待ち */
void wait_sem( sem_type *sem, tcb_type *tcb );
/* タスクをスライスして継続実行 */
void slice_task( tcb_type *tcb );
/* 遷移時の状態変数を変更 */
void set_next_state( tcb_type *tcb, byte next_state );

リアルタイムふうOS」への4件のフィードバック

  1. ken

    RTF-OS ですか。ちょっとかっこいいですね^^
    私も30日でOSを作るとかいう本を読んで勉強してますが、睡眠薬代わりになってて、ちっとも頭に入りません。リアルタイム風ですらはるか彼方です。

    返信
  2. ken

    もう何ヶ月も前に買ったのに、まだ4分の1しか読んでません。途中で、「はじめて読む486」が読みたくなって脱線したのもありますが、、、
    就寝前に読んでると1日分が何日にもなってお得です^^

    返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です