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


/* ------------------------------------------------------------------------ */ 
/*  Hyper Operating System V4  μITRON4.0仕様 Real-Time OS                  */ 
/*    カーネル依存情報定義ヘッダ アラームハンドラ                           */ 
/*                                                                          */ 
/*                                  Copyright (C) 1998-2002 by Project HOS  */ 
/*                                  http://sourceforge.jp/projects/hos/     */ 
/* ------------------------------------------------------------------------ */ 
 
 
#ifndef __HOS_V4__knl_alm_h__ 
#define __HOS_V4__knl_alm_h__ 
 
 
 
#include "knl_hos.h" 
#include "knl_tim.h" 
 
 
 
/* ------------------------------------------ */ 
/*                  定数定義                  */ 
/* ------------------------------------------ */ 
 
/* IDの範囲 */ 
#define KERNEL_TMIN_ALMID	TMIN_ALMID			/* アラームハンドラIDの最小値 */ 
#define KERNEL_TMAX_ALMID	(KERNEL_TMIN_ALMID + kernel_almcb_cnt - 1) 
												/* アラームハンドラIDの最大値 */ 
 
 
 
/* ------------------------------------------ */ 
/*                 型定義                     */ 
/* ------------------------------------------ */ 
 
/* アラームハンドラコントロールブロック(ROM部) */ 
typedef struct t_kernel_almcb_rom 
{ 
	ATR    almatr;		/* アラームハンドラ属性 */ 
	VP_INT exinf;		/* アラームハンドラの拡張情報 */ 
	FP     almhdr;		/* アラームハンドラの起動番地 */ 
} T_KERNEL_ALMCB_ROM; 
 
/* アラームハンドラコントロールブロック(RAM部) */ 
typedef struct t_kernel_almcb_ram 
{ 
	T_KERNEL_TIM timobj;		/* タイマオブジェクトを継承 */ 
	RELTIM       lefttim;		/* アラームハンドラのを次に起動する時刻までの時間 */ 
	const T_KERNEL_ALMCB_ROM *almcb_rom;	/* アラームハンドラコントロールブロックROM部へのポインタ */ 
} T_KERNEL_ALMCB_RAM; 
 
 
 
/* ---------------------------------- */ 
/*        グローバル変数宣言          */ 
/* ---------------------------------- */ 
 
/* アラームハンドラ */ 
extern       T_KERNEL_ALMCB_RAM *kernel_almcb_ram_tbl[];	/* アラームハンドラコントロールブロックテーブル */ 
extern const INT kernel_almcb_cnt;							/* アラームハンドラコントロールブロック個数 */ 
 
#define KERNEL_ALMID_TO_ALMCB_RAM(almid)	(kernel_almcb_ram_tbl[(almid) - KERNEL_TMIN_ALMID]) 
															/* アラームハンドラIDからALMCB RAMアドレスを取得 */ 
 
 
 
/* ------------------------------------------ */ 
/*                関数宣言                    */ 
/* ------------------------------------------ */ 
 
#ifdef __cplusplus 
extern "C" { 
#endif 
 
/* アラームハンドラ */ 
void    kernel_ini_alm(void);								/* アラームハンドラの初期化 */ 
void    kernel_alm_hdr(T_KERNEL_TIM *timobj, RELTIM tic);	/* アラームハンドラのタイマハンドラ */ 
ER      sta_alm(ID almid, RELTIM almtim);					/* アラームハンドラの動作開始 */ 
ER      stp_alm(ID almid);									/* アラームハンドラの動作停止 */ 
 
#ifdef __cplusplus 
} 
#endif 
 
 
 
#endif	/* __HOS_V4__knl_alm_h__ */ 
 
 
/* ------------------------------------------------------------------------ */ 
/*  Copyright (C) 1998-2002 by Project HOS                                  */ 
/* ------------------------------------------------------------------------ */