www.pudn.com > norti2.0 > NOCFG.H
/******************************************************************************
* μITRON仕様OS NORTiコンフギュレーションヘッダ *
* *
* File name : nocfg.h *
* Copyright (c) Miyazaki System Planning Office. 1991-1995 *
* *
* 91-10-25 TRCOM Version (nodef.h) *
* 92-02-16 Ver1.00 *
* 92-04-30 Ver1.10β *
* 92-08-20 Ver1.10 *
* 93-01-18 Ver1.11 *
* 93-02-17 Ver1.12 *
* 94-01-05 Ver1.14 *
* 95-06-15 Ver1.20 *
* 95-09-12 Ver1.21 *
******************************************************************************/
#ifndef NOCFG_H
#define NOCFG_H
/*
アプリケーションの1つのモジュールに #include して下さい。
#include の前で TSKID_MAX 〜 ISTKSZ をユーザの適した値に #define できます。
#define しない場合は、本ファイルに定義されたデフォルト値が適用されます。
本ファイルのコンフィグレーション定数の値を変更しても構いません。
本ファイルに代わるファイルを別名で作成して #include しても構いません。
*/
#include "nosys.h"
#ifdef __cplusplus
extern "C" {
#endif
/* コンフィグレーション定数 */
#ifndef TSKID_MAX
#define TSKID_MAX 32 /* タスクID上限(1〜)*/
#endif
#ifndef FLGID_MAX
#define FLGID_MAX 32 /* イベントフラグID上限(0〜)*/
#endif
#ifndef SEMID_MAX
#define SEMID_MAX 32 /* セマフォID上限(0〜)*/
#endif
#ifndef MBXID_MAX
#define MBXID_MAX 32 /* メイルボックスID上限(0〜)*/
#endif
#ifndef MPLID_MAX
#define MPLID_MAX 32 /* メモリプールID上限(0〜)*/
#endif
#ifndef CYHNO_MAX
#define CYHNO_MAX 32 /* 周期起動ハンドラ番号上限(0〜)*/
#endif
#ifndef ALHNO_MAX
#define ALHNO_MAX 32 /* アラームハンドラ番号上限(0〜)*/
#endif
#ifndef TPRI_MAX
#define TPRI_MAX 8 /* タスク優先度上限(1〜, できるだけ小さく)*/
#endif
#ifndef ISTKSZ
#define ISTKSZ 1024 /* 割り込みハンドラのスタックサイズ */
#endif
#ifndef KNL_LEVEL
#define KNL_LEVEL 5 /* カーネルの割り込みレベル(68K,H8/500)*/
#endif
/* オブジェクトの定義 */
T_TCB NEAR cdecl _TCB[TSKID_MAX-(TSKID_MIN)+1]; /* TCB */
T_FLG NEAR cdecl _FLG[FLGID_MAX-(FLGID_MIN)+1]; /* イベントフラグ */
T_SEM NEAR cdecl _SEM[SEMID_MAX-(SEMID_MIN)+1]; /* セマフォ */
T_MBX NEAR cdecl _MBX[MBXID_MAX-(MBXID_MIN)+1]; /* メイルボックス */
T_MPL NEAR cdecl _MPL[MPLID_MAX-(MPLID_MIN)+1]; /* メモリプール */
T_TMR NEAR cdecl _CYH[CYHNO_MAX-(CYHNO_MIN)+1]; /* 周期起動ハンドラのタイマ */
T_TMR NEAR cdecl _ALH[ALHNO_MAX-(ALHNO_MIN)+1]; /* アラームハンドラのタイマ */
T_RDQ NEAR cdecl RDQ[TPRI_MAX+2]; /* レディキューヘッダ */
/* オブジェクト・ポインタテーブルの定義 */
T_TCB NEAR * NEAR cdecl _pTCB[TSKID_MAX-(TSKID_MIN)+1];
T_MPL NEAR * NEAR cdecl _pMPL[MPLID_MAX-(MPLID_MIN)+1];
T_TMR NEAR * NEAR cdecl _pCYH[CYHNO_MAX-(CYHNO_MIN)+1];
T_TMR NEAR * NEAR cdecl _pALH[ALHNO_MAX-(ALHNO_MIN)+1];
/* システム変数 */
ID NEAR cdecl tskid_max = TSKID_MAX; /* タスクID上限 */
ID NEAR cdecl flgid_max = FLGID_MAX; /* イベントフラグID上限 */
ID NEAR cdecl semid_max = SEMID_MAX; /* セマフォID上限 */
ID NEAR cdecl mbxid_max = MBXID_MAX; /* メイルボックスID上限 */
ID NEAR cdecl mplid_max = MPLID_MAX; /* メモリプールID上限 */
HNO NEAR cdecl cyhno_max = CYHNO_MAX; /* 周期起動ハンドラ番号上限 */
HNO NEAR cdecl alhno_max = ALHNO_MAX; /* アラームハンドラ番号上限 */
TPRI NEAR cdecl tpri_max = TPRI_MAX; /* タスク優先度上限 */
int NEAR cdecl istksz = ISTKSZ; /* 割り込みハンドラのスタックサイズ */
/* カーネルのステータスレジスタ値 */
#ifdef NORTi68K
UH KNL_SR = 0x2000|(KNL_LEVEL<<8);
#endif
#ifdef NORTiH85
UH KNL_SR = KNL_LEVEL<<8;
#endif
/* カーネル内部変数 */
T_RDQ NEAR cdecl TMQ[256]; /* 時間待ちキューヘッダ */
T_TIME NEAR cdecl SYSCLK; /* システムクロック */
T_CTX NEAR cdecl CTX; /* 初期コンテキスト */
UINT NEAR cdecl IMASK; /* 割込みマスクフラグ */
B NEAR cdecl INEST; /* 割込みネストカウンタ(減カウント)*/
B NEAR cdecl DELAY; /* 遅延ディスパッチ要求フラグ */
TPRI NEAR cdecl NOWPRI; /* 現在のタスク優先度 */
UH NEAR cdecl IDLE_LOOP_CNT; /* アイドルループ・カウンタ */
ER NEAR cdecl SYSER; /* システムエラーコード */
B FAR * NEAR cdecl USP; /* ユーザスタックポインタ値 */
B FAR * NEAR cdecl ISP; /* 割込みスタックポインタ初期値 */
#ifdef NORTiH83
UW NEAR cdecl STKLEN; /* 残りスタック長(NORTi/H83)*/
#else
unsigned NEAR cdecl STKLEN; /* 残りスタック長(その他)*/
#endif
/* ROM化対応(NORTi/86)*/
#ifdef NORTi86
#ifdef ROM
#ifdef __TURBOC__
#ifdef __SMALL__
#define sysini sysini_rom
#endif
#ifdef __MEDIUM__
#define sysini sysini_rom
#endif
#endif
#ifdef M_I86 /* MS-C */
#define sysini sysini_rom
#if (_MSC_VER>=700)
UH NEAR cdecl STKHQQ = 0;
#else
UH NEAR pascal STKHQQ = 0;
#endif
#endif
#endif /* ROM */
#endif /* NORTi86 */
#ifdef __cplusplus
};
#endif
#endif /* NOCFG_H */