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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? debug.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
字號:
/*
	debug.c	- for debugging
	960925	TR	Organized and added all three types of debugging.
*/
#include "ntddk.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
	DbgPrint( 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;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久免费桃花| 欧美精品在欧美一区二区少妇| 一区二区三区精品视频| 国产日本欧美一区二区| 亚洲精品在线观| 精品电影一区二区三区| 精品日韩一区二区| 久久中文字幕电影| 久久亚洲私人国产精品va媚药| 欧美一级搡bbbb搡bbbb| 日韩欧美一区电影| 久久婷婷久久一区二区三区| 日韩欧美一区二区三区在线| 欧美一区二区美女| 久久一区二区视频| 国产欧美一区二区精品忘忧草| 国产日产欧美一区二区视频| 国产精品视频免费| 亚洲免费视频中文字幕| 亚洲免费视频中文字幕| 亚洲在线观看免费视频| 日本怡春院一区二区| 黄色日韩三级电影| 高清国产一区二区| 日本高清无吗v一区| 欧美午夜精品一区二区三区| 538在线一区二区精品国产| 欧美一区二区三区日韩视频| 久久亚洲一区二区三区明星换脸| 国产精品热久久久久夜色精品三区 | 国产成人免费高清| 91一区一区三区| 欧美日韩国产综合一区二区| 91精品久久久久久蜜臀| 国产精品免费aⅴ片在线观看| 亚洲欧美另类久久久精品2019| 日本vs亚洲vs韩国一区三区| 成人a区在线观看| 欧美日韩国产成人在线免费| 久久香蕉国产线看观看99| 一区视频在线播放| 三级欧美韩日大片在线看| 国产又黄又大久久| 欧美视频完全免费看| 久久精品在线免费观看| 亚洲成人动漫一区| 国产成人精品免费在线| 666欧美在线视频| 中文字幕在线不卡| 国模一区二区三区白浆| 欧美性猛交xxxxxxxx| 国产三级三级三级精品8ⅰ区| 午夜欧美在线一二页| 色婷婷精品久久二区二区蜜臀av | 欧美电影影音先锋| 亚洲欧美日韩中文播放| 精品一区二区三区香蕉蜜桃 | 美日韩一级片在线观看| 91福利在线播放| 国产精品全国免费观看高清 | 国产精品色婷婷久久58| 日日夜夜一区二区| 91麻豆自制传媒国产之光| www精品美女久久久tv| 亚洲aaa精品| 色婷婷综合久久久久中文一区二区| 精品成人私密视频| 久久国产福利国产秒拍| 欧美区在线观看| 五月激情综合网| 欧美精品久久久久久久多人混战| 一片黄亚洲嫩模| av男人天堂一区| 国产精品成人网| av资源网一区| 国产精品天美传媒| 波多野结衣在线aⅴ中文字幕不卡| 久久久久亚洲综合| 国产精品自在在线| 国产亚洲污的网站| av亚洲产国偷v产偷v自拍| 日本一区二区三区高清不卡| 懂色中文一区二区在线播放| 国产欧美一区二区精品性色| 成人国产在线观看| 亚洲人精品一区| 成人精品一区二区三区中文字幕 | 在线观看亚洲精品视频| 欧美探花视频资源| 亚洲一区二区三区四区的 | 欧美日韩在线直播| 日本不卡123| 久久久噜噜噜久久中文字幕色伊伊 | 国产精品久99| 91国偷自产一区二区开放时间 | 国产精品欧美久久久久一区二区| k8久久久一区二区三区| 亚洲精品午夜久久久| 欧美日韩大陆一区二区| 日本不卡123| 国产欧美视频一区二区| 91色视频在线| 午夜精品一区在线观看| 欧美不卡一区二区三区| 国产成人日日夜夜| 亚洲一区精品在线| 久久影院视频免费| 91精品福利视频| 日韩国产在线观看一区| 久久亚洲欧美国产精品乐播| 91免费小视频| 国产在线麻豆精品观看| 最新中文字幕一区二区三区 | 在线观看日韩一区| 国产最新精品精品你懂的| 亚洲欧洲国产日本综合| 日韩视频永久免费| 92精品国产成人观看免费| 免费成人在线网站| 亚洲欧洲精品成人久久奇米网| 欧美一区日本一区韩国一区| 99精品欧美一区二区三区小说 | 久久精品一区二区三区不卡牛牛| 91在线国产福利| 国产综合成人久久大片91| 亚洲国产精品一区二区久久| 久久久久成人黄色影片| 日韩欧美国产一区二区在线播放| 色综合一区二区| 国产精品一区二区黑丝| 偷拍日韩校园综合在线| 日本一区二区视频在线观看| 欧美日韩视频在线观看一区二区三区 | 日韩欧美一区二区久久婷婷| 成人性生交大片免费看中文网站| 亚洲精品亚洲人成人网| 精品国产成人在线影院| 99久久99久久精品免费观看| 青娱乐精品视频在线| 亚洲成人动漫精品| 日本一区二区三区在线不卡| 51久久夜色精品国产麻豆| thepron国产精品| 婷婷开心激情综合| 亚洲福利一区二区三区| 国产精品九色蝌蚪自拍| 精品国产乱码久久久久久闺蜜 | 欧美mv日韩mv国产| 91精品婷婷国产综合久久竹菊| 成人白浆超碰人人人人| 麻豆国产精品一区二区三区| 亚洲一区二区三区在线看| 国产精品久久久久影院| 精品日韩一区二区三区| 欧美岛国在线观看| 欧美精品 日韩| 欧美日韩国产小视频在线观看| 成人午夜精品在线| 97超碰欧美中文字幕| 极品少妇xxxx精品少妇偷拍| 天天综合网天天综合色| 亚洲精品欧美激情| 中文字幕av一区二区三区高 | 国产精品18久久久久久久网站| 青青草一区二区三区| 亚洲一卡二卡三卡四卡| 1024国产精品| 亚洲成人三级小说| 亚洲成人动漫一区| 天堂影院一区二区| 亚洲乱码国产乱码精品精98午夜| 亚洲小说欧美激情另类| 洋洋成人永久网站入口| 亚洲精品精品亚洲| 玉米视频成人免费看| 五月婷婷久久丁香| 日韩中文字幕区一区有砖一区| 亚洲18女电影在线观看| 亚洲v中文字幕| 麻豆一区二区在线| 国产麻豆一精品一av一免费 | 久久亚洲精品国产精品紫薇| 久久亚洲综合色| 亚洲精选视频在线| 亚洲成av人片| 精品无人区卡一卡二卡三乱码免费卡 | 午夜精品福利久久久| 精品一区二区在线视频| 精品一区二区三区香蕉蜜桃 | 日韩免费观看2025年上映的电影 | 国产乱码精品一区二区三区av| 国产激情精品久久久第一区二区 | 精品无人区卡一卡二卡三乱码免费卡| 日本伊人精品一区二区三区观看方式| 日本不卡一区二区| 丰满岳乱妇一区二区三区| 91蝌蚪国产九色| 欧美精品一区二区三| 国产精品另类一区| 亚洲第一综合色|