1.カスタマイズヘッダ
----------------------------------------------------------------------
1.1.カスタマイズヘッダ項目(nos_conf.h)

サポートするカスタマイズ項目は以下のとおり。

　・各種機能の組み込み選択
  ・拡張機能の設定
　・メッセージ通信のカスタマイズ
　・イベント同期のカスタマイズ
　・リソース共有のカスタマイズ
　・メモリ管理のカスタマイズ
　・タイマー待機のカスタマイズ
　・タイムシェアリング機能のカスタマイズ

1.2.カスタマイズソース項目（nos_conf.c)

　・メッセージの初期化と割り当て


2.カスタマイズ詳細
----------------------------------------------------------------------
2.1.ビットフィールド型define

ビットフィールド型defineは対応する各BITをONにすることにより各機能が有
功となります。

    [機能Define]
    
     USE_NOS_DEBUG  ... デバッグモード
     USE_NOS_STAT   ... ステータス検査
     USE_NOS_MSG　　... メッセージ通信
     USE_NOS_EVENT  ... イベント同期
     USE_NOS_TIMER  ... タイマー待機
     USE_NOS_RESRC　... リソース共有
     USE_NOS_MEM    ... 動的メモリ確保
     USE_NOS_TICK   ... タイムスライス機能


2.2.数値型define     

０とマイナスの値を定義することはできません。

    NOS_TASK_TICK　... タイムスライスの時間
    NOS_MEM_ALLOC  ... 割り当てるメモリの最小サイズ(シフト数)


2.3.文字型define

ビットフィールド型defineが無効であれば意味を持ちません。

    NOS_MEM_PAGE   ... メモリサイズを保持する変数の型


3.1.デバッグモード / USE_NOS_DEBUG
----------------------------------------------------------------------
各種エラーチェックを有効にして、エラー検出時にエラーコード(NOS_ERROR)
を返します。

本機能はコード容量の増加と実効速度の低下を招きますので、デバッグ終了時
はOFFにすることを推奨します。

 [ビットフィールド詳細]
　・0b      範囲外パラメータ値の判定
　・1b      メッセージ／メモリブロックの無効返却の検出
　・2b      二重待機要求発生の検出
　・3b      タスク側からのスケジューラ呼び出しの無効化


4.メッセージ通信 / USE_NOS_MSG
----------------------------------------------------------------------
メッセージ通信ではメッセージ構造体の情報としてメッセージを送信したタス
クのIDを追加することができます。

 [ビットフィールド詳細]
 ・0b ... メッセージ通信の有効
 ・1b ... メッセージに送信元タスク情報を付加 
 ・2b ... 高速メッセージ返却モード


4.1.メッセージボックス

メッセージボックス構造体 x NUM_MSG_BOX分のメモリを消費します。

　[メッセージボックス構造体]
　　・NOS_LINK
　　・NOS_LINK

　・NUM_NOS_MSG ... 扱えるメッセージの総数


4.2.メッセージ

メッセージ構造体 x NUM_MSG_BOX分のメモリを消費しますが、メッセージ構造
体のユーザー定義部はプログラムの設計に応じて定義します。

定義した構造体はnos_conf.cで初期化処理を行わなければ使用することはでき
ません。

　[基本フォーマット]
　　・NOS_MSG
      ・リンク情報
      ・int own  ... メッセージの最終返却先メッセージボックス番号
      ・int send ... メッセージを送信したタスクのID (送信元情報付加時)
　　・ユーザー定義部

メッセージの管理領域として構造体の先頭部分には必ずNOS_MSGを定義(macro)
する必要があります。


4.3.メッセージバッファ

メッセージの本体を定義します。複数のメッセージ構造体を定義する場合は本
構造体に追加してください。

メッセージバッファの初期化はnos_conf.cに定義された関数で行います。


4.4.高速メッセージ返却モード

メッセージのオーナーボックス番号への送信（返却）時に発生する遅延時間を
優先順位を無視することで大幅に短縮することができます。


5.イベント同期 / USE_NOS_EVENT
----------------------------------------------------------------------
イベント構造体 x NUM_NOS_EVENT分のメモリを消費します。

 [ビットフィールド詳細]

 ・0b ... イベント同期の有効


 [イベント構造体]
 ・リンク情報

・NUM_NOS_EVENT ... 扱えるイベントの数


6.リソース共有 / USE_NOS_RESRC
----------------------------------------------------------------------
優先度上限プロトコルをサポートしたミューテックス型リソース共有を利用で
きます。

 [ビットフィールド詳細]

 ・0b ... リソース共有の有効
 ・1b ... 優先度上限プロトコルの有効


リソース共有を有効にした場合、リソース構造体 x NUM_NOS_RESRC分のメモリ
を消費します。

　[リソース構造体]
   ・リンク情報
   ・int  ロックしているタスクのID
   ・int  ロックしているタスクの優先度ワーク (優先度上限プロトコル有効時)

・NUM_NOS_RESRC ... 管理できるリソースの数


7.動的メモリ確保 / USE_NOS_MEM
----------------------------------------------------------------------
割り当てられるメモリは要求サイズをページ単位に変換して割り当てます。割
り当て時には割り当てページの管理領域も同時に確保されます。

 [ビットフィールド詳細]

 ・0b ... 動的メモリ確保の有効
 ・1b ... 断片化解消モード

 [メモリ管理領域(32バイト固定)]
 ・void *
 ・NOS_MEM_BLOCK
 ・short int buf[??]

 
7.1.ページサイズ

割り当てるメモリの最小単位をシフト数で指定します。メモリの登録はバイト
単位での登録が行えますが、割り当てられるのはページサイズ単位です。

メモリのアロケーション単位のシフト数に5以下の値を指定することはできませ
ん。

    NOS_MEM_ALLOC ... メモリのアロケーション単位（シフト数）


7.2.断片化解消モード

メモリ割り当て時に要求したメモリ（のブロック）と完全に一致する空きブロッ
クがあれば優先的に空きブロックを割り当てます。

一致するメモリブロックがない場合は最も大きい空きブロックを分割してメモ
リを割り当てます。分割されたブロックからメモリを割り当てる場合は常に後
方のブロックを割り当てます。


7.3.最大ページ数

メモリサイズを保持する変数の型はNOS_MEM_PAGEにより定義されますが、必ず
unsigned型でなければなりません。

    NOS_MEM_PAGE   ... メモリのページ数の変数の型
                       unsigned (short / long) int


8.タスク関連
----------------------------------------------------------------------
タスク構造体 x NUM_NOS_TASK分のメモリを消費します。

　[タスク構造体]
　　・リンク情報
　　・int (*)(void)
    ・union
    　・int
　　　・USE_MEM_BLOCK

・NUM_NOS_TASK ... 登録可能なタスクの数


9.タイムシェアリング / USE_NOS_TICK
----------------------------------------------------------------------
有効にするとintサイズのメモリを消費し、時間チェックのために各メソッドの
実効時間が極僅かに低下します。

 [ビットフィールド詳細]
 ・0b ... タイムシェアリング有効

 ・NOS_TICK_TIME
    ・０以外の値 ... TICK値


10.カスタマイズソース (nos_conf.c)
----------------------------------------------------------------------
カスタマイズソースにはユーザーが変更するコード部分が収められています。

 [内容]
  ・メッセージバッファの初期化関数


10.1.初期化関数: initMsg

指定したメッセージ構造体を初期化して指定したメッセージボックスに割り当
てます。

メッセージの返却先としてメッセージ番号がセットされますが、優先順位など
はデフォルト値に初期化されるので注意が必要です。

　書式
    void initMsg(void *, enum No_Nos_Box)

　引数
　　メッセージボックス番号
　　　メッセージを割り当てるメッセージボックスの番号

　　割り当てるメッセージ
　　　割り当てるメッセージ構造体のアドレス。


