亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? debug.c

?? PNX系列設(shè)備驅(qū)動 PNX系列設(shè)備驅(qū)動
?? C
字號:
/*
	debug.c	- for debugging
	960925	TR	Organized and added all three types of debugging.
*/
#define WANTVXDWRAPS
#include <basedef.h>
#include <vmm.h>
#include <vmmreg.h>
#include <vxdwraps.h>
#include <vpicd.h>
#include <configmg.h>
#include <vwin32.h>

#include "vxstd.h"
#include "vxwin.h"

#include "tmmanlib.h"
#include "platform.h"

void	debugOutput (  UInt8* pString );
void	debugTrace ( UInt8* szString );


Bool	debugInit ( debugParameters* Parameters  )
{
	DebugObject*	Debug = &TMManGlobal->Debug;

	Debug->DBGLevelBitmap = ((debugParameters*)Parameters)->LevelBitmap;
	Debug->DBGType = ((debugParameters*)Parameters)->Type;
	Debug->TraceLength = ((debugParameters*)Parameters)->TraceBufferSize ;
	Debug->TraceBuffer = Debug->TraceBufferData;
	Debug->TracePosition = 0;
	Debug->TraceWrapped = False;
	return statusSuccess;
}



Bool	debugExit ( void )
{
	return statusSuccess;
}

Bool	debugCheckLevel ( UInt32 Level )
{
	DebugObject*	Debug = &TMManGlobal->Debug;
	if( (( Level) & Debug->DBGLevelBitmap)  )
	{
		return True;
	}
	return False;
}

UInt32	debugLevel ( UInt32 OptionBits )
{
	DebugObject*	Debug = &TMManGlobal->Debug;
	UInt32	TempOptionBits;
	TempOptionBits = Debug->DBGLevelBitmap;
	Debug->DBGLevelBitmap = OptionBits;
	return TempOptionBits;
}

	

void	debugPrintf( 
	Int8* FormatString, 
	... )
{
	PVOID	pArgument = &FormatString;
	USHORT	Idx, StrIdx = 0, BufIdx = 0;
	UCHAR	Char;
	DebugObject*	Debug = &TMManGlobal->Debug;

	// this function is ment for a 32 bit environment.
	// modify pointer increment values for 32 bit stack.
	((PVOID *)pArgument)++;

	for( Idx = 0 ; FormatString[Idx] ; Idx ++ )
	{
		if( FormatString[Idx] == '%')
		{
			Char = FormatString[++Idx];
			switch( Char )
			{

				case 'd':
				{
					ULONG	Value = *((ULONG*)pArgument);
					ULONG	Divisor;
					for( Divisor = 1 ; (Value / Divisor) >= 10 ;
						Divisor *= 10);
					do
					//for( ; Value ; Divisor /= 10)
					{
						Debug->DBGBuffer[StrIdx++] = (UCHAR)
							( (Value / Divisor) + '0');

						Value = (ULONG)(Value % Divisor);
						Divisor /= 10;
					} while ( Divisor > 0);

					((ULONG*)pArgument)++;
				}
				break;

				case 's':
				for ( BufIdx = 0 ;
					((UCHAR*)(*((UCHAR**)pArgument)))[BufIdx];
					BufIdx++ )
					Debug->DBGBuffer[StrIdx++] = 
					(((UCHAR*)(*((UCHAR**)pArgument)))[BufIdx]);

				((PVOID *)pArgument)++;
				break;

				case 'c':
				Debug->DBGBuffer[StrIdx++] = (*((UCHAR*)pArgument));
				((ULONG*)pArgument)++;
				break;

				case 'x':
				{
					ULONG	Value = *((ULONG*)pArgument);
					UCHAR	Hex[] = "0123456789ABCDEF";
					ULONG	Divisor;
					for( Divisor = 1 ; (Value / Divisor) >= 16 ;
						Divisor *= 16);

					do
					{
						Debug->DBGBuffer[StrIdx++] = 
							(Hex[(Value / Divisor)]);

						Value = (ULONG)(Value % Divisor);

						Divisor /= 16;

					} while ( Divisor > 0);

					((ULONG*)pArgument)++;
				}
				break;

				default :
				Debug->DBGBuffer[StrIdx++] = ('%');
				Debug->DBGBuffer[StrIdx++] = (Char);
				break;
			}
		}
		else
		{
			Debug->DBGBuffer[StrIdx++] = FormatString[Idx];
			continue;
		}
	}

	Debug->DBGBuffer[StrIdx] = 0;

	
	switch ( Debug->DBGType )
	{
		case constTMManDebugTypeTrace :
		debugTrace ( Debug->DBGBuffer );
		break;

		case constTMManDebugTypeOutput :
		debugOutput ( Debug->DBGBuffer );
		break;

		case constTMManDebugTypeNULL :	
		case constTMManDebugTypeCOM :	
		case constTMManDebugTypeLPT :	
		default :
		break;
	}
}

void	debugOutput ( UInt8* szString )
{
	// It can dump the output both to monochrone and write it
	// to the debug buffer - for offline retrieval
	vxdTraceString( szString );
}

void	debugTrace ( UInt8* szString )
{
	DebugObject*	Debug = &TMManGlobal->Debug;
	// It can dump the output both to monochrone and write it
	// to the debug buffer - for offline retrieval
}

// get the debug buffers on the target(other)processor
Bool	debugDPBuffers (
	UInt32	HalHandle,
	UInt8 **ppFirstHalfPtr, 
	UInt32 *pFirstHalfSize, 
	UInt8 **ppSecondHalfPtr, 
	UInt32 *pSecondHalfSize )
{
	UInt8*			SDRAMPtr;
	UInt32			SDRAMMapped;
	UInt32			SDRAMLength;
	UInt32			SDRAMPhysical;
	DebugControl*	DebugPtr;
	UInt8*			BufferPtr;
	UInt32			Idx;
	UInt8			MagicString[constDebugMagicSize];
	

	/* initialize them to NULL in case we don't find the MAGIC header */

	*ppFirstHalfPtr = NULL;
	*ppSecondHalfPtr = NULL;
	*pFirstHalfSize = 0;
	*pSecondHalfSize = 0;

	halGetSDRAMInfo ( 
		HalHandle,
		(Pointer*)&SDRAMPhysical, 
		(Pointer*)&SDRAMMapped, 
		&SDRAMLength );

	SDRAMPtr = (UInt8*)SDRAMMapped;

	strcpy ( MagicString, constDebugMagic );

	MagicString[0] = 'T';
	MagicString[1] = 'M';
	MagicString[2] = '-';
	MagicString[3] = 'S';
	MagicString[4] = 'o';
	MagicString[5] = 'f';
	MagicString[6] = 't';

	// search the entire SDRAM for the magic string 
	for ( Idx = 0 ; 
		Idx < SDRAMLength ;
		Idx += constDebugMagicSize, SDRAMPtr += constDebugMagicSize )
	{
		if ( strcmp ( SDRAMPtr, MagicString ) == 0 )
		{
			break;
		}
	}

	if ( Idx >= SDRAMLength )
	{
		return False;
	}


	DebugPtr = (DebugControl*)SDRAMPtr;

	/* conver the physical address to mapped address */
	BufferPtr = (UInt8*)
		( ( halAccess32(HalHandle , (volatile UInt32)DebugPtr->Buffer ) - SDRAMPhysical ) + 
		SDRAMMapped );

	if ( halAccess32( HalHandle, DebugPtr->Wrapped ) ) // wrap around has occured 
	{
		*pFirstHalfSize = 
			halAccess32( HalHandle, DebugPtr->BufLen ) - 
			halAccess32( HalHandle, DebugPtr->BufPos );

		*ppFirstHalfPtr = BufferPtr + halAccess32( HalHandle, DebugPtr->BufPos );
	}

	*ppSecondHalfPtr = BufferPtr;
	*pSecondHalfSize = halAccess32( HalHandle, DebugPtr->BufPos );

	return True;
}

// get the debug TMMan internal buffers on the target(other)processor
Bool	debugTargetBuffers (
	UInt32	HalHandle,
	UInt8 **ppFirstHalfPtr, 
	UInt32 *pFirstHalfSize, 
	UInt8 **ppSecondHalfPtr, 
	UInt32 *pSecondHalfSize )
{
	UInt8*			SDRAMPtr;
	UInt32			SDRAMMapped;
	UInt32			SDRAMLength;
	UInt32			SDRAMPhysical;
	DebugControl*	DebugPtr;
	UInt8*			BufferPtr;
	UInt32			Idx;
	UInt8			MagicString[constDebugMagicSize];
	

	/* initialize them to NULL in case we don't find the MAGIC header */

	*ppFirstHalfPtr = NULL;
	*ppSecondHalfPtr = NULL;
	*pFirstHalfSize = 0;
	*pSecondHalfSize = 0;

	halGetSDRAMInfo ( 
		HalHandle,
		(Pointer*)&SDRAMPhysical, 
		(Pointer*)&SDRAMMapped, 
		&SDRAMLength );

	SDRAMPtr = (UInt8*)SDRAMMapped;

	strcpy ( MagicString, constDebugTMManMagic );

	MagicString[0] = 'T';
	MagicString[1] = 'i';
	MagicString[2] = 'l';
	MagicString[3] = 'a';
	MagicString[4] = 'k';
	MagicString[5] = 'r';
	MagicString[6] = 'a';
	MagicString[7] = 'j';

	// search the entire SDRAM for the magic string 
	for ( Idx = 0 ; 
		Idx < SDRAMLength ;
		Idx += constDebugMagicSize, SDRAMPtr += constDebugMagicSize )
	{
		if ( strcmp ( SDRAMPtr, MagicString ) == 0 )
		{
			break;
		}
	}

	if ( Idx >= SDRAMLength )
	{
		return False;
	}


	DebugPtr = (DebugControl*)SDRAMPtr;

	/* conver the physical address to mapped address */
	BufferPtr = (UInt8*)
		( ( halAccess32(HalHandle , (volatile UInt32)DebugPtr->Buffer ) - SDRAMPhysical ) + 
		SDRAMMapped );

	if ( halAccess32( HalHandle, DebugPtr->Wrapped ) ) // wrap around has occured 
	{
		*pFirstHalfSize = 
			halAccess32( HalHandle, DebugPtr->BufLen ) - 
			halAccess32( HalHandle, DebugPtr->BufPos );

		*ppFirstHalfPtr = BufferPtr + halAccess32( HalHandle, DebugPtr->BufPos );
	}

	*ppSecondHalfPtr = BufferPtr;
	*pSecondHalfSize = halAccess32( HalHandle, DebugPtr->BufPos );

	return True;
}


// get the debug buffer on the host(this)processor
Bool	debugHostBuffers (
	UInt8 **ppFirstHalfPtr, 
	UInt32 *pFirstHalfSize, 
	UInt8 **ppSecondHalfPtr, 
	UInt32 *pSecondHalfSize )
{

	*ppFirstHalfPtr = NULL;
	*ppSecondHalfPtr = NULL;
	*pFirstHalfSize = 0;
	*pSecondHalfSize = 0;
	return statusSuccess;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美黑人一区二区三区| 欧美喷潮久久久xxxxx| 久久免费午夜影院| 轻轻草成人在线| 2020国产成人综合网| 国产精品系列在线观看| 中文字幕一区视频| 在线精品亚洲一区二区不卡| 日韩国产欧美在线观看| 精品奇米国产一区二区三区| 成人妖精视频yjsp地址| 椎名由奈av一区二区三区| 欧美日韩高清影院| 久久99久久久欧美国产| 国产欧美一区视频| 在线免费观看不卡av| 另类欧美日韩国产在线| 国产精品无遮挡| 在线不卡欧美精品一区二区三区| 精品一区二区免费在线观看| 国产精品久久久久久久久晋中| 欧美综合视频在线观看| 久久成人18免费观看| 国产精品成人在线观看| 欧美高清性hdvideosex| 国产成人亚洲精品狼色在线| 亚洲成av人片在线| 国产日韩成人精品| 欧美少妇xxx| 国产米奇在线777精品观看| 亚洲视频一区二区在线观看| 欧美成人高清电影在线| 一本高清dvd不卡在线观看| 麻豆91精品视频| 亚洲日本va午夜在线影院| 欧美一区二区国产| 91一区二区三区在线播放| 麻豆一区二区99久久久久| 亚洲摸摸操操av| 国产欧美一区二区精品仙草咪 | 精品国产免费一区二区三区四区 | 国产欧美一区二区精品婷婷| 色婷婷亚洲精品| 国产精品12区| 久久精品久久99精品久久| 一区二区三区在线视频观看| 欧美精品一区二区三区在线播放| 欧美中文字幕一区二区三区亚洲| 成人免费高清在线观看| 久久国产尿小便嘘嘘| 亚洲国产欧美在线| 亚洲乱码国产乱码精品精98午夜 | 91精品国产入口在线| 91视视频在线直接观看在线看网页在线看 | 亚洲午夜电影在线观看| 亚洲欧美中日韩| 中文字幕第一区第二区| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美日韩一区二区三区高清| av一二三不卡影片| 国产成人在线网站| 精品一区二区三区的国产在线播放| 一区二区激情小说| 成人免费在线视频观看| 欧美国产欧美综合| 国产网红主播福利一区二区| 欧美成人一区二区三区在线观看| 欧美日韩久久久一区| 在线精品视频小说1| 色综合久久久久| 91免费版pro下载短视频| 懂色av中文字幕一区二区三区 | 99久久久国产精品免费蜜臀| 国产一区二区三区高清播放| 九色综合狠狠综合久久| 精品一区二区三区av| 国产又黄又大久久| 国产精品一区二区你懂的| 国产一区二区三区最好精华液| 精彩视频一区二区| 国精产品一区一区三区mba桃花 | 丁香桃色午夜亚洲一区二区三区| 精久久久久久久久久久| 国产精品一区三区| 国产精品亚洲综合一区在线观看| 国产高清不卡一区| 成人精品电影在线观看| 99re热这里只有精品免费视频| 色婷婷av一区二区三区之一色屋| 欧美影片第一页| 欧美一二区视频| 久久女同精品一区二区| 国产精品久久看| 洋洋成人永久网站入口| 五月婷婷另类国产| 久久成人免费日本黄色| 成人av动漫网站| 日本高清不卡一区| 3d动漫精品啪啪| 久久久777精品电影网影网 | 日韩精品成人一区二区三区| 激情综合网天天干| av综合在线播放| 欧美精品一二三四| 久久久精品人体av艺术| 亚洲精品中文字幕乱码三区| 午夜亚洲国产au精品一区二区| 麻豆高清免费国产一区| 成人一区二区在线观看| 在线免费观看日本一区| 精品嫩草影院久久| 亚洲激情校园春色| 欧美aaaaaa午夜精品| 成人国产视频在线观看| 欧美肥妇bbw| 国产精品美日韩| 免费看日韩精品| 99re视频这里只有精品| 欧美www视频| 中文字幕一区二区三区av| 日本不卡一二三| 91丨porny丨蝌蚪视频| 精品久久国产老人久久综合| 亚洲色图清纯唯美| 激情六月婷婷久久| 日本电影欧美片| 久久久.com| 蜜臀精品一区二区三区在线观看| av一本久道久久综合久久鬼色| 欧美一二三四区在线| 亚洲久本草在线中文字幕| 国产精品一区二区久久不卡| 欧美色偷偷大香| **欧美大码日韩| 国产高清精品网站| 日韩写真欧美这视频| 一区二区三区高清| 国产成人亚洲综合a∨婷婷图片| 91精品视频网| 亚洲曰韩产成在线| 99久久综合国产精品| 久久久综合精品| 久久精品国产亚洲高清剧情介绍| 色婷婷综合激情| 国产精品欧美一级免费| 国产精品99精品久久免费| 欧美一区二区黄色| 天天av天天翘天天综合网| 在线免费亚洲电影| 亚洲女同一区二区| 99久精品国产| 亚洲视频网在线直播| 粉嫩av亚洲一区二区图片| 精品成人佐山爱一区二区| 日韩av网站免费在线| 欧美日韩国产一区二区三区地区| 亚洲美女区一区| 在线欧美小视频| 一区二区三区四区精品在线视频| 99综合电影在线视频| 国产精品色噜噜| 成人一区在线看| 国产精品福利一区| 97精品电影院| 亚洲三级在线看| 日本丶国产丶欧美色综合| 亚洲欧美日韩国产手机在线| 91日韩在线专区| 亚洲综合免费观看高清完整版在线 | 亚洲欧洲av另类| 99久久99久久精品免费看蜜桃| 国产精品福利一区| 91麻豆成人久久精品二区三区| 亚洲欧美在线高清| 欧美在线视频不卡| 一区二区三区精品久久久| 欧美性xxxxxx少妇| 亚洲bt欧美bt精品| 91精品国产aⅴ一区二区| 美女久久久精品| 久久欧美中文字幕| 成人av电影免费在线播放| 亚洲免费色视频| 3d成人动漫网站| 国产福利一区在线| 亚洲欧美日韩系列| 欧美精品久久99久久在免费线 | 国产高清成人在线| 综合久久综合久久| 欧美三级中文字| 免费在线观看日韩欧美| 久久奇米777| 91麻豆swag| 日本亚洲电影天堂| 国产欧美日韩在线| 欧美午夜一区二区| 国产麻豆欧美日韩一区| 亚洲蜜臀av乱码久久精品| 日韩一级视频免费观看在线| 国产成人亚洲精品青草天美|