1.はじめに
----------------------------------------------------------------------
NOS(No Operating System)は状態遷移テーブルの関数をスレッドとして登録す
ることで擬似マルチタスクを実現することができる組み込み向けの汎用ライブ
ラリです。

利用可能なOSが存在しない小規模な組み込み用途を想定していますので、一切
の外部ライブラリを必要とせず、純粋にCコンパイラ単体で利用することができ
ます。


2.サポートする機能
----------------------------------------------------------------------
イベント駆動によるマルチスレッド処理を前提に下記の機能サポートしていま
す。

　・ラウンドロビン型スケジューラ
　・優先順位付きメッセージ通信
　・イベント同期
　・優先度上限プロトコル付きミューテックス型リソース共有
　・簡易断片化防止機能付き動的メモリ管理
　・ワンショット型タイマー待機(要タイマー変数操作）
　・タイムシェアリング機能(要タイマー変数操作）
　・デバッグ機能

各機能はconfigファイル内のdefine値により有効／無効を変更することができ
ます。


3.コンパイル方法
----------------------------------------------------------------------
ライブラリのコンパイルに必要なファイルを以下に示します。本ライブラリを
利用するには下記の全ファイルが同一ディレクトリ上に必要です。

　・nos.h       システムヘッダ
　・nos.c       カーネル本体ソース
　・nos_conf.h  カスタマイズヘッダ (nos.hでインクルード)
　・nos_conf.c  カスタマイズソース (nos.cでインクルード)

コンパイルにはANSIに準拠したCコンパイラだけが必要です。（ライブラリの
類は一切必要としません）


3.1.システムヘッダ:nos.h

ライブラリを使用する場合は必ず本ヘッダをインクルードしてください。


3.2.ライブラリソース:nos.c

ライブラリのソースです。


3.3.カスタマイズヘッダ:nos_conf.h

メッセージ構造体や各種Defineの定義ファイルが定義されていますので、必ず
内容を把握する必要があります。

詳細はnos_conf.txtを参照してください。

　・定義内容
　　・ライブラリが返す待機ステータスのdefine (3種類)
　　・各種機能の組み込み選択フラグ (#if定義)
　　・各種機能のdefine


3.4.カスタマイズソース:nos_conf.c

カスタマイズヘッダで定義したメッセージ通信のメッセージバッファを初期化
する関数が定義されています。

複数のメッセージを利用する場合は必ず本ソースにメッセージバッファの初期
化を追加して下さい。

本ファイルはnos.c内からインクルードされています。


4.制限
----------------------------------------------------------------------
本ライブラリは制御用ソフトウェア向けにANSIに準拠したCコンパイラ単体だけ
でコンパイルすることができますが、多少の制約があります。

4.1.int型への依存

コードサイズと実効速度の問題から整数型にはintを使用しています。従って
指定可能な数値はint範囲となります。


4.2.コンパイラの最適化

デバッグ機能の有効／無効にはコンパイラの最適化（デッドコードの除去）に
依存しています。

デバッグコードにはデッドコードの除去を行えないコンパイラへの最低限の対
策は行ってありますので、コードサイズを除けば影響は最低限に抑えることが
できます。


4.3.移植性

本ソースコードはPPC、PPC64、AMD64の各Linux環境下のgccで下記のコンパイル
オプションにてコンパイル・実行を確認していますが、それは他のコンパイラ
で問題がないことを保証することではありません。

 gcc -ansi -Wall -pedantic


5.参考文献／ソースコード
----------------------------------------------------------------------
ありません。


6.ライセンスと免責事項
----------------------------------------------------------------------
本ソフトウェアはGNU Lesser General Public Licenseに従い配布されており、
完全に無保証です。本ソフトウェアを利用して発生した如何なる損害・責任も
利用者自身に帰属するものとします。

