⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 interrupt.h

📁 小型操作系统,以VC为开发环境,需要boachs调试
💻 H
字号:
/***************************************************************************
**     File name   : interrupt.h
**     Author      : x.cheng
**     Create date :
**
**	  Comments:
**		interrupt...
**	
**     Revisions:
**     $Log: interrupt.h,v $
**     Revision 1.1  2005/08/05 15:07:03  x.cheng
**     add into repositories
**
**
***************************************************************************/
#ifndef __INTERRUPT_H__
#define __INTERRUPT_H__

//#define _DEBUG_ISR__

// Context after an interrupt.
typedef struct IrqContext_Struct
{
	// General purpose register.
	unsigned long ulEdi, ulEsi, ulEbp, ulEbx, ulEdx, ulEcx, ulEax;
	
	unsigned long ulEs, ulDs;	// Segment register.
	
	unsigned long ulIrqNb;		// The interrupt number.
	
	unsigned long ulEip;		// Current instruction pointer (k.a. program counter).
	
	unsigned long ulCs;			// Code segment register.
	
	unsigned long ulEflags;		// EFLAGS register.
} __attribute__ ((packed)) ts_IrqContext;

// Context of a user task after an interrupt.
typedef struct IrqUserContext_Struct
{
	// General purpose register.
	unsigned long ulEdi, ulEsi, ulEbp, ulEbx, ulEdx, ulEcx, ulEax;

	unsigned long ulEs, ulDs;	// Segment register.
	
	unsigned long ulIrqNb;		// The interrupt number.
	
	unsigned long ulEip;		// Current instruction pointer (k.a. program counter).
	
	unsigned long ulCs;			// Code segment register.
	
	unsigned long ulEflags;		// EFLAGS register.
		
	unsigned long ulUserEsp;	// User stack pointer register.
	
	unsigned long ulUserSs;		// User stack segment register.
} __attribute__ ((packed)) ts_IrqUserContext;

// Context after a system call.
typedef struct SystemCallContext_Struct
{
	unsigned long _ulDummy;
	// General purpose register.
	unsigned long ulEdi, ulEsi, ulEbp, ulEbx, ulEdx, ulEcx, ulEax;
	
	unsigned long ulEs, ulDs;	// Segment register.
	
	unsigned long ulEip;		// Current instruction pointer (k.a. program counter).
	
	unsigned long ulCs;			// Code segment register.
	
	unsigned long ulEflags;		// EFLAGS register.
	
	unsigned long ulUserEsp;	// User stack pointer register.
	
	unsigned long ulUserSs;		// User stack segment register.
} __attribute__ ((packed)) ts_SystemCallConext;


typedef struct InterruptHandler_Struct
{
	void (*fpIrqHandler)( ts_IrqContext * );
} ts_InterruptHandler;

void DefaultInterruptHandler(ts_IrqContext * pstContext);

void Tp4IsrInstallHandler( unsigned char ucIrq, void *pvHandler );
#define IsrInstallHandler( ucIrq, pvHandler )	\
	Tp4IsrInstallHandler( (unsigned char)ucIrq, (void *)pvHandler );

#endif /* end of  __INTERRUPT_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -