exception.cpp

来自「基于ADI blackfin的异常处理程序」· C++ 代码 · 共 77 行

CPP
77
字号
#include <stdio.h>


#include "exception.h"


// check the validity of 'MAX_EXCEPTION_STACK_SIZE'

#if MAX_EXCEPTION_STACK_SIZE  < 1

#error 'MAX_EXCEPTION_STACK_SIZE' was not properly configured. Please check "exception.h"!

#endif



#define ALIGN_MASK  (0xffffffff ^ (MAX_EXCEPTION_STACK_SIZE*STACK_TYPE_SIZE))



_sys_ExceptStack::_sys_ExceptStack(void) : 
                tail(NULL),
                front(NULL),
                tempCounter(0)
{
	tail = front = except_stack_queue;
	
	bEmpty = true;
	
	bFull = false;
}



_sys_ExceptStack::~_sys_ExceptStack(void)
{
	
}


void _sys_ExceptStack::AddException(void *pE)
{
	if(bFull)
	    return;
	    
	if( ((ADDR)(front+1) & ALIGN_MASK) == (ADDR)tail )
	    bFull = true;
	    
	bEmpty = false;
	    
	*front++ = pE;
	
	tempCounter++;
}


void* _sys_ExceptStack::GetException(void)
{
	if(bEmpty)
	    return NULL;
	    
	if( ((ADDR)(tail+1) & ALIGN_MASK) == (ADDR)front )
	    bEmpty = true;
	    
	bFull = false;
	    
	void* value = *tail++;
	
	tempCounter--;
	
	return value;
}


_sys_ExceptStack __sysExceptionStack;

⌨️ 快捷键说明

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