www.pudn.com > hos-v4_os.rar > itron.h


/* ------------------------------------------------------------------------ */ 
/*  Hyper Operating System V4  μITRON4.0仕様 Real-Time OS                  */ 
/*    μITRON4.0 標準ヘッダ                                                 */ 
/*                                                                          */ 
/*                                  Copyright (C) 1998-2002 by Project HOS  */ 
/*                                  http://sourceforge.jp/projects/hos/     */ 
/* ------------------------------------------------------------------------ */ 
 
 
 
#ifndef __HOS_V4__itron_h__ 
#define __HOS_V4__itron_h__ 
 
 
 
/* ------------------------------------ */ 
/*          データ型定義                */ 
/* ------------------------------------ */ 
 
typedef signed char		B;			/* 符号付き8ビット整数 */ 
typedef signed short	H;			/* 符号付き16ビット整数 */ 
typedef signed long		W;			/* 符号付き32ビット整数 */ 
 
typedef unsigned char	UB;			/* 符号無し8ビット整数 */ 
typedef unsigned short 	UH;			/* 符号無し16ビット整数 */ 
typedef unsigned long	UW;			/* 符号無し32ビット整数 */ 
 
typedef signed char		VB;			/* データタイプが定まらない8ビットの値 */ 
typedef signed short	VH;			/* データタイプが定まらない16ビットの値 */ 
typedef signed long		VW;			/* データタイプが定まらない32ビットの値 */ 
 
typedef void			*VP;		/* データタイプが定まらないものへのポインタ */ 
typedef void			(*FP)();	/* プログラムの起動番地(ポインタ) */ 
 
typedef signed   int	INT;		/* プロセッサに自然なサイズの符号付き整数(16bit以上) */ 
typedef unsigned int	UINT;		/* プロセッサに自然なサイズの符号無し整数(16bit以上) */ 
 
typedef INT		BOOL;		/* 真偽値 */ 
 
typedef INT		FN;			/* 機能コード */ 
typedef INT		ER;			/* エラーコード */ 
typedef INT		ID;			/* オブジェクトのID番号 */ 
typedef UH		ATR;		/* オブジェクトの属性 */ 
typedef UH		STAT;		/* オブジェクトの状態 */ 
typedef UH		MODE;		/* サービスコールの動作モード */ 
typedef INT		PRI;		/* 優先度 */ 
typedef UW		SIZE;		/* メモリ領域のサイズ */ 
typedef W		TMO;		/* タイムアウト指定 */ 
typedef UW		RELTIM;		/* 相対時間 */ 
 
typedef struct t_systim		/* システム時刻 */ 
{ 
	UW ltime;				/* 下位 32bit */ 
	UH utime;				/* 上位 16bit */ 
} SYSTIM; 
 
typedef long	VP_INT;		/* VP または INT */ 
 
typedef ER		ER_BOOL;	/* ER または BOOL */ 
 
typedef W		ER_UINT;	/* ER または UINT */ 
 
typedef INT		ER_ID;		/* ER または ID */ 
 
typedef UH		TEXPTN;		/* タスク例外要因のパターン */ 
 
typedef UH		FLGPTN;		/* フラグパターン */ 
 
typedef INT     EXCNO;		/* CPU例外ハンドラ番号 */ 
 
typedef INT		INHNO;		/* 割り込みハンドラ番号 */ 
typedef INT		INTNO;		/* 割り込み番号 */ 
 
 
 
/* ------------------------------------ */ 
/*             定数定義                 */ 
/* ------------------------------------ */ 
 
/* 一般 */ 
#ifdef NULL		/* C言語標準ヘッダとの競合回避 */ 
#undef NULL 
#endif 
 
#ifdef __cplusplus 
#define NULL		0			/* 無効ポインタ */ 
#else 
#define NULL		((void *)0)	/* 無効ポインタ */ 
#endif 
 
#define TRUE		1			/* 真 */ 
#define FALSE		0			/* 偽 */ 
#define E_OK		0			/* 正常終了 */ 
 
 
/* オブジェクト属性 */ 
#define TA_NULL		0			/* オブジェクト属性を指定しない */ 
#define TA_HLNG		0x00		/* 高級言語用のインターフェースで処理単位を起動 */ 
#define TA_ASM		0x01		/* アセンブリ言語用のインターフェースで処理単位を起動 */ 
 
#define TA_TFIFO	0x00		/* タスクの待ち行列をFIFO順に */ 
#define TA_TPRI		0x01		/* タスクの待ち行列をタスクの優先度順に */ 
 
#define TA_MFIFO	0x00		/* メッセージの待ち行列をFIFO順に */ 
#define TA_MPRI		0x02		/* メッセージの待ち行列をメッセージの優先度順に */ 
 
#define TA_ACT		0x02		/* タスクを起動された状態で生成 */ 
#define TA_RSTR		0x04		/* 制約タスク */ 
 
#define TA_WSGL		0x00		/* イベントフラグを複数のタスクが待つことを許さない */ 
#define TA_WMUL		0x02		/* イベントフラグを複数のタスクが待つことを許す */ 
#define TA_CLR		0x04		/* 待ち解除時にイベントフラグをクリア */ 
 
#define TA_INHERIT	0x02		/* ミューテックスが優先度継承プロトコルをサポート */ 
#define TA_CEILING	0x03		/* ミューテックスが優先度上限プロトコルをサポート */ 
 
#define TA_STA		0x02		/* 周期ハンドラを動作している状態で生成 */ 
#define TA_PHS		0x04		/* 周期ハンドラの位相を保存 */ 
 
 
/* タイムアウト指定 */ 
#define TMO_POL		0			/* ポーリング */ 
#define TMO_FEVR	(-1)		/* 永久待ち */ 
#define TMO_NBLK	(-2)		/* ノンブロッキング */ 
 
 
/* サービスコールの動作モード */ 
#define TWF_ANDW	0x00		/* イベントフラグのAND待ち */ 
#define TWF_ORW		0x01		/* イベントフラグのOR待ち */ 
 
 
/* オブジェクトの状態 */ 
#define TTS_RUN		0x01		/* 実行状態 */ 
#define TTS_RDY		0x02		/* 実行可能状態 */ 
#define TTS_WAI		0x04		/* 待ち状態 */ 
#define TTS_SUS		0x08		/* 強制待ち状態 */ 
#define TTS_WAS		0x0c		/* 二重待ち状態 */ 
#define TTS_DMT		0x10		/* 休止状態 */ 
 
#define TTW_SLP		0x0001		/* 起床待ち状態 */ 
#define TTW_DLY		0x0002		/* 時間経過待ち状態 */ 
#define TTW_SEM		0x0004		/* セマフォ資源の獲得待ち状態 */ 
#define TTW_FLG		0x0008		/* イベントフラグ待ち状態 */ 
#define TTW_SDTQ	0x0010		/* データキューへの送信待ち状態 */ 
#define TTW_RDTQ	0x0020		/* データキューからの受信待ち状態 */ 
#define TTW_MBX		0x0040		/* メールボックスからの受信待ち状態 */ 
#define TTW_MTX		0x0080		/* ミューテックスのロック待ち状態 */ 
#define TTW_SMBF	0x0100		/* メッセージバッファへの送信待ち状態 */ 
#define TTW_RMBF	0x0200		/* メッセージバッファからの受信待ち状態 */ 
#define TTW_CAL		0x0400		/* ランデブの呼び出し待ち状態 */ 
#define TTW_ACP		0x0800		/* ランデブの受付待ち状態 */ 
#define TTW_RDV		0x1000		/* ランデブの終了待ち状態 */ 
#define TTW_MPF		0x2000		/* 固定長メモリブロックの獲得待ち状態 */ 
#define TTW_MPL		0x4000		/* 可変長メモリブロックの獲得待ち状態 */ 
 
#define TTEX_ENA	0x00		/* タスクの例外処理許可状態 */ 
#define TTEX_DIS	0x01		/* タスク例外処理禁止状態 */ 
 
#define TCYC_STP	0x00		/* 周期ハンドラが動作していない */ 
#define TCYC_STA	0x01		/* 周期ハンドラが動作している */ 
 
#define TALM_STP	0x00		/* アラームハンドラが動作していない */ 
#define TALM_STA	0x00		/* アラームハンドラが動作している */ 
 
#define TOVR_STP	0x00		/* 上限プロセッサ時間が設定されていない */ 
#define TOVR_STA	0x01		/* 上限プロセッサ時間が設定されている */ 
 
/* その他の定数 */ 
#define TSK_SELF	0			/* 自タスク指定 */ 
#define TSK_NONE	0			/* 該当するタスクが無い */ 
 
#define TPRI_SELF	0			/* 自タスクのベース優先度の指定 */ 
#define TPRI_INI	0			/* タスクの起動時優先度の指定 */ 
 
 
/* エラーコード */ 
#define E_SYS		(-5)		/* システムエラー */ 
#define E_NOSPT		(-9)		/* 未サポート機能 */ 
#define E_RSFN		(-10)		/* 予約機能コード */ 
#define E_RSATR		(-11)		/* 予約属性 */ 
#define E_PAR		(-17)		/* パラメータエラー */ 
#define E_ID		(-18)		/* 不正ID番号 */ 
#define E_CTX		(-25)		/* コンテキストエラー */ 
#define E_MACV		(-26)		/* メモリアクセス違反 */ 
#define E_OACV		(-27)		/* オブジェクトアクセス違反 */ 
#define E_ILUSE		(-28)		/* サービスコール不正使用 */ 
#define E_NOMEM		(-33)		/* メモリ不足 */ 
#define E_NOID		(-34)		/* ID番号不足 */ 
#define E_OBJ		(-41)		/* オブジェクト状態エラー */ 
#define E_NOEXS		(-42)		/* オブジェクト未生成 */ 
#define E_QOVR		(-43)		/* キューイングオーバーフロー */ 
#define E_RLWAI		(-49)		/* 待ち状態の強制解除 */ 
#define E_TMOUT		(-50)		/* ポーリング失敗またはタイムアウト */ 
#define E_DLT		(-51)		/* 待ちオブジェクトの削除 */ 
#define E_CLS		(-52)		/* 待ちオブジェクトの状態変化 */ 
#define E_WBLK		(-57)		/* ノンブロッキング受付け */ 
#define E_BOVR		(-58)		/* バッファオーバーフロー */ 
 
 
/* IDの範囲(HOS独自) */ 
#define TMIN_TSKID	1			/* タスクのID番号の最小値 */ 
#define TMIN_SEMID	1			/* セマフォのID番号の最小値 */ 
#define TMIN_FLGID	1			/* イベントフラグのID番号の最小値 */ 
#define TMIN_DTQID	1			/* データキューのID番号の最小値 */ 
#define TMIN_MBXID	1			/* メールボックスタスクのID番号の最小値 */ 
#define TMIN_MBFID	1			/* メッセージバッファのID番号の最小値 */ 
#define TMIN_MPFID	1			/* 固定長メモリプールのID番号の最小値 */ 
#define TMIN_CYCID	1			/* 周期ハンドラのID番号の最小値 */ 
#define TMIN_ALMID	1			/* アラームハンドラのID番号の最小値 */ 
#define TMIN_ISRID	1			/* 割り込みサービスルーチンのID番号の最小値 */ 
 
 
 
/* ------------------------------------ */ 
/*           マクロ定義                 */ 
/* ------------------------------------ */ 
 
 
/* エラーコード取り出し */ 
#define	MERCD(ercd)		((ER)((B)(ercd)))		/* エラーコードからメインエラーコードを取り出す */ 
#define	SERCD(ercd)		((ercd) >> 8)			/* エラーコードからサブエラーコードを取り出す */ 
 
 
 
#endif /* __HOS_V4__itron_h__ */ 
 
 
 
/* ------------------------------------------------------------------------ */ 
/*  Copyright (C) 1998-2002 by Project HOS                                  */ 
/* ------------------------------------------------------------------------ */