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

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

?? debug.c

?? 一個類似與Windows環境下的softice的源代碼
?? C
字號:
/****************************************************************************** * * Copyright (c) 2003 Gerhard W. Gruber * * PROJECT: pICE * $Source: /cvsroot/pice/pice/module/debug.c,v $ * $Revision: 1.5 $ * $Date: 2004/02/17 23:07:36 $ * $Author: lightweave $ * $Name:  $ * * $Log: debug.c,v $ * Revision 1.5  2004/02/17 23:07:36  lightweave * * Improved the DEBUG facillity and replaced the configuration handler with a * new code which now can read MS Windows INI style files. See CHANGES.txt for * more details. * Also added a macro which prevents compiling for kernels before 2.4.19. * * Revision 1.4  2003/06/18 22:00:22  lightweave * DEBUG and DEBUG_SERIAL added * * *****************************************************************************/static char *ident = "$Header: /cvsroot/pice/pice/module/debug.c,v 1.5 2004/02/17 23:07:36 lightweave Exp $";/*++Copyright (c) 1998-2001 Klaus P. GerlicherModule Name:    debug.cAbstract:    debug outputEnvironment:    LINUX 2.2.X    Kernel mode onlyAuthor:     Klaus P. GerlicherRevision History:    04-Feb-1999:    created    15-Nov-2000:    general cleanup of source filesCopyright notice:  This file may be distributed under the terms of the GNU Public License.--*/////////////////////////////////////////////////////// INCLUDES////#include "remods.h"#include <asm/io.h>#include <stdarg.h>#include "precomp.h"#include "serial.h" #include "serial_port.h"////////////////////////////////////////////////////// GLOBALS////LONG lDebugLevel = 1000;static spinlock_t ulDebugLock;static ULONG ulDebugFlags;USHORT usDebugPortBase;ULONG g_port,g_baudrate;static char tempDebug[1024];static char tempBuffer[1024];static UBYTE gDebugLevel[DBL_COUNT] = "IWE";#ifdef CONFIG_SMPstatic char tempPrefix[1024];#endif////////////////////////////////////////////////////// FUNCTIONS////void DebugSetupSerial(ULONG port, ULONG baudrate);//************************************************************************* // Pice_dprintf() // // internal debug print//************************************************************************* VOID PICE_dprintf(PCHAR File, PCHAR Function, int Line, DEBUG_TYPE DebugTyp, DEBUG_LEVEL DebugLevel, PCHAR DebugMessage, ...){	 if(debug_permission.Mode != DBG_NONE)	 {		  // Errors are always printed.		  if(DebugLevel != DBL_ERROR)		  {			   if(debug_permission.Permission[DebugTyp] == FALSE)					goto Quit;		  }	 }	 va_list ap;	 LONG i;	 va_start(ap, DebugMessage);	 spin_lock_irqsave(&ulDebugLock,ulDebugFlags);#ifdef CONFIG_SMP	 PICE_sdprintf(tempDebug, "[CPU #%u]: ", current->processor);#endif	 DebugSendByte('[');	 for(i = 0; i < debug_permission.Nesting; i++)		  DebugSendByte(' ');	 PICE_sdprintf("%s:%s:%u:%c] ", Function, File, Line, gDebugLevel[DebugLevel]);	 PICE_sprintf(tempBuffer,  "%s", DebugMessage);	 PICE_vsprintf(tempDebug, tempBuffer, ap);	 DebugSendString(tempDebug);	 spin_unlock_irqrestore(&ulDebugLock,ulDebugFlags);	 va_end(ap);Quit:	 return;}//************************************************************************// SendByte()//// Output a character to the serial port //************************************************************************BOOLEAN DebugSendByte(UCHAR x){   ULONG timeout;   timeout = 0x00FFFFL;   // Wait for transmitter to clear    while((inportb((USHORT)(usDebugPortBase + LSR)) & XMTRDY) == 0)   {		if(!(--timeout))		{			 // re-setup the COMM port			 DebugSetupSerial(g_port,g_baudrate);			 return FALSE;		}   }   outportb((USHORT)(usDebugPortBase + TXR), x);   return TRUE;}ULONG DebugPrintNumber(long num, int base, int size, int precision, int type){	 UBYTE str[100];	 	 PICE_number(str, num, base, size, precision, type); 	 return(DebugSendValidString(str));}//************************************************************************* // PICE_dsprint() //// This function is similar to dprintf with the difference that it works // only with valid strings and numbers. You can call this function from// anywhere to output strings to the debug port, but you have to make sure// that the memory is available as it doesn't check this and will crash if// not.//************************************************************************* VOID PICE_dprint(PCHAR File, PCHAR Function, int Line, DEBUG_TYPE DebugTyp, DEBUG_LEVEL DebugLevel, PCHAR DebugMessage, ...){	 if(debug_permission.Mode != DBG_NONE)	 {		  // Errors are always printed, otherwise we check if the report is valid.		  if(DebugLevel != DBL_ERROR)		  {			   if(debug_permission.Permission[DebugTyp] == FALSE)					goto Quit;		  }	 }	 va_list ap;	 LONG i;	 va_start(ap, DebugMessage);	 if(DebugTyp == DBT_FUNCTION)	 {		  if(DebugMessage[0] == 'E')			   debug_permission.Nesting++;	 }	 DebugSendByte('[');	 for(i = 0; i < debug_permission.Nesting; i++)		  DebugSendByte(' ');	 DebugSendValidString(Function);	 DebugSendByte(':');	 DebugSendValidString(File);	 DebugSendByte(':');	 DebugPrintNumber(Line, 10, -1, -1, 0);	 DebugSendByte(':');	 DebugSendByte(gDebugLevel[DebugLevel]);	 DebugSendValidString("] ");	 PICE_vdprintf(DebugMessage, ap);	 if(DebugTyp == DBT_FUNCTION)	 {		  if(DebugMessage[0] == 'L')			   debug_permission.Nesting--;	 }	 va_end(ap);Quit:	 return;}//************************************************************************* // DebugSendValidString() // // This function is intended to be used to print debug info when the normal// function doesn't work. The assumption here is, that the address is valid// and doesn't have to be checked.//************************************************************************* ULONG DebugSendValidString(UBYTE *str){	 ULONG rc = 0;     // We have to do this here the hard way, because we can not use     // normal functions as this will cause a recursion on most functions     // because they rely on IsAddressValid.#ifdef DEBUG_SERIAL	 while(*str != 0)	 {		  DebugSendByte(*str);		  str++;		  rc++;	 }#endif	 return(rc);}///************************************************************************// DebugSetSpeed()/////************************************************************************void DebugSendString(LPSTR s){    ULONG len = strlen(s),i;    for(i=0;i<len;i++)    {       DebugSendByte(s[i]);    }}///************************************************************************// DebugSetSpeed()/////************************************************************************void DebugSetSpeed(ULONG baudrate){    UCHAR c;    ULONG divisor;    divisor = (ULONG) (115200L/baudrate);    c = inportb((USHORT)(usDebugPortBase + LCR));    outportb((USHORT)(usDebugPortBase + LCR), (UCHAR)(c | 0x80)); // Set DLAB     outportb((USHORT)(usDebugPortBase + DLL), (UCHAR)(divisor & 0x00FF));    outportb((USHORT)(usDebugPortBase + DLH), (UCHAR)((divisor >> 8) & 0x00FF));    outportb((USHORT)(usDebugPortBase + LCR), c);          // Reset DLAB }///************************************************************************// DebugSetOthers()//// Set other communications parameters //************************************************************************void DebugSetOthers(ULONG Parity, ULONG Bits, ULONG StopBit){    ULONG setting;    UCHAR c;    if (usDebugPortBase == 0)					return ;    if (Bits < 5 || Bits > 8)				return ;    if (StopBit != 1 && StopBit != 2)			return ;    if (Parity != NO_PARITY && Parity != ODD_PARITY && Parity != EVEN_PARITY)							return;    setting  = Bits-5;    setting |= ((StopBit == 1) ? 0x00 : 0x04);    setting |= Parity;    c = inportb((USHORT)(usDebugPortBase + LCR));    outportb((USHORT)(usDebugPortBase + LCR), (UCHAR)(c & ~0x80)); // Reset DLAB     // no ints    outportb((USHORT)(usDebugPortBase + IER), (UCHAR)0);    outportb((USHORT)(usDebugPortBase + FCR), (UCHAR)0);    outportb((USHORT)(usDebugPortBase + LCR), (UCHAR)setting);    outportb((USHORT)(usDebugPortBase + MCR),  DTR | RTS);    return ;}///************************************************************************// DebugSetupSerial()/////************************************************************************void DebugSetupSerial(ULONG port,ULONG baudrate){	USHORT ports[]={COM1BASE,COM2BASE};    spin_lock_init(&ulDebugLock);    g_port = port;    g_baudrate = baudrate;    usDebugPortBase = ports[port-1];    DebugSetOthers(NO_PARITY,8,1);    DebugSetSpeed(baudrate);	debug_permission.Mode = DBG_SERIAL;	PICE_dprint(__FILE__, __FUNCTION__, __LINE__, DBT_DEBUG, DBL_INFO, "**** serial debug initialized ****\n");}// EOF

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆自制传媒国产之光| 一区二区国产盗摄色噜噜| 久久不见久久见中文字幕免费| 欧美日韩在线播| 日本午夜精品视频在线观看 | 免费成人av在线| 欧美zozozo| 国产精品一区一区三区| 欧美高清在线精品一区| 91日韩精品一区| 亚洲电影一区二区三区| 日韩天堂在线观看| 不卡视频在线看| 亚洲午夜久久久| 精品日韩在线一区| 成人黄色小视频| 亚洲国产精品天堂| 国产亚洲自拍一区| 色哦色哦哦色天天综合| 日韩国产一二三区| 国产欧美一区二区精品久导航 | 中文字幕在线观看一区二区| 99免费精品视频| 日韩综合一区二区| 久久精品夜夜夜夜久久| 91精品91久久久中77777| 日本欧美加勒比视频| 国产视频视频一区| 3atv一区二区三区| 国产成人av一区二区三区在线观看| 国产精品久久看| 欧美一级电影网站| 99久久国产免费看| 理论电影国产精品| 亚洲日韩欧美一区二区在线| 日韩一区二区三区av| 成人在线视频一区| 久久精品国产成人一区二区三区 | 国产麻豆精品久久一二三| 亚洲女人小视频在线观看| 久久亚洲综合色| 欧美精品自拍偷拍| 色婷婷精品大视频在线蜜桃视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲精品午夜久久久| 久久九九久久九九| 欧美一级夜夜爽| 色美美综合视频| 国产成人精品一区二区三区网站观看| 五月天欧美精品| 亚洲欧美日韩成人高清在线一区| 精品国产乱子伦一区| 欧美日韩精品一区二区三区蜜桃| 成人动漫中文字幕| 国产精品一二三区| 久久99久久精品| 日韩经典一区二区| 亚洲国产一二三| 亚洲综合一二区| 亚洲色图欧美偷拍| 亚洲三级小视频| 国产精品久久网站| 国产精品理论片| 中文字幕av免费专区久久| 久久久久久久久99精品| 精品免费99久久| 精品少妇一区二区三区在线视频| 欧美三级日韩三级国产三级| 91麻豆视频网站| 色综合久久综合| 色婷婷综合久色| 在线观看日韩一区| 欧洲一区二区av| 欧美三级视频在线观看| 欧美日韩国产一二三| 欧美剧情片在线观看| 欧美精品1区2区3区| 欧美肥妇bbw| 日韩欧美黄色影院| 精品国产免费久久| 国产亚洲欧美色| 国产精品精品国产色婷婷| 国产精品美女一区二区| 国产精品国产精品国产专区不片| 国产精品乱人伦一区二区| 亚洲少妇30p| 午夜精品福利视频网站| 全部av―极品视觉盛宴亚洲| 另类小说图片综合网| 国产高清不卡一区二区| thepron国产精品| 在线观看一区日韩| 制服丝袜一区二区三区| 精品久久一二三区| 国产色一区二区| 一区二区三区在线视频观看| 亚洲精品久久久蜜桃| 婷婷国产v国产偷v亚洲高清| 免费高清不卡av| av激情亚洲男人天堂| 色噜噜狠狠色综合中国| 91.麻豆视频| 久久精品网站免费观看| 亚洲欧洲综合另类| 日韩1区2区日韩1区2区| 国产电影精品久久禁18| 欧美亚洲国产一卡| 日韩欧美在线123| 中文字幕乱码一区二区免费| 亚洲黄色片在线观看| 麻豆精品国产91久久久久久 | 91免费国产视频网站| 91精品国产综合久久香蕉麻豆| 欧美一区二区福利视频| 国产日韩欧美制服另类| 亚洲国产毛片aaaaa无费看| 国产真实乱偷精品视频免| 97久久精品人人爽人人爽蜜臀| 91精品国产色综合久久不卡蜜臀 | 日韩激情一区二区| 成人夜色视频网站在线观看| 欧美日韩一二区| 国产视频一区在线观看 | 伊人夜夜躁av伊人久久| 久久黄色级2电影| 色女孩综合影院| 久久精品网站免费观看| 亚洲成a人片在线不卡一二三区| 国产美女久久久久| 91精品国产一区二区三区香蕉| 国产精品拍天天在线| 美女视频一区在线观看| 色婷婷亚洲精品| 日本一区二区免费在线| 蜜臀久久99精品久久久久宅男 | 国产精品久久久久久久久久久免费看 | 国产白丝精品91爽爽久久| 欧美日韩一本到| 亚洲欧洲性图库| 麻豆精品一区二区三区| 在线观看亚洲一区| 国产精品色在线观看| 国产在线视频精品一区| 日韩一区二区麻豆国产| 亚洲国产乱码最新视频 | 国产综合色产在线精品| 欧美嫩在线观看| 亚洲精品视频自拍| 成人激情视频网站| 久久男人中文字幕资源站| 美女精品一区二区| 正在播放一区二区| 天天综合色天天综合| 色婷婷综合久久久中文字幕| 中文字幕一区二区日韩精品绯色| 久久成人av少妇免费| 欧美久久婷婷综合色| 亚洲午夜视频在线观看| 欧美在线观看你懂的| 亚洲激情中文1区| 成人动漫在线一区| 国产精品久久久久久久午夜片| 国产一区二区三区免费观看| 欧美一二区视频| 免费观看在线色综合| 777精品伊人久久久久大香线蕉| 亚洲国产精品久久久男人的天堂| 欧洲视频一区二区| 亚洲一区在线电影| 欧美日韩dvd在线观看| 午夜激情一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 欧美亚洲日本国产| 亚洲第一搞黄网站| 91精品国产91久久久久久最新毛片| 午夜日韩在线电影| 欧美日本在线播放| 日本不卡不码高清免费观看| 日韩午夜在线观看| 国产一区二区不卡在线 | 亚洲激情六月丁香| 欧美怡红院视频| 日本中文字幕一区二区有限公司| 欧美精三区欧美精三区| 久久99最新地址| 国产欧美日韩卡一| 91成人免费在线| 久久精品国产免费| 国产拍欧美日韩视频二区| 91色porny在线视频| 亚洲一级在线观看| 精品少妇一区二区三区日产乱码| 国产高清精品网站| 亚洲综合视频在线| 欧美第一区第二区| 99久久国产综合精品色伊| 午夜久久久久久| 国产亚洲一区字幕| 在线观看日韩精品| 久久激五月天综合精品|