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 */