interrupt.h

来自「小型操作系统,以VC为开发环境,需要boachs调试」· C头文件 代码 · 共 92 行

H
92
字号
/***************************************************************************
**     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 + =
减小字号Ctrl + -
显示快捷键?