📄 bkendlog.c
字号:
bkendLogWdbContext (&pExcInfo->context); fprintf (wdbLogFile,"\t\tvec\t\t%d\n",(int) pExcInfo->vec); fprintf (wdbLogFile,"\t\tpEsf\t\t0x%x\n",(int) pExcInfo->pEsf); }/********************************************************************************* bkendLogWdbBpInfo - log a WDB_BP_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbBpInfo ( WDB_BP_INFO * pBpInfo /* WDB_BP_INFO structure to log */ ) { fprintf (wdbLogFile,"WDB_BP_INFO\n"); fprintf (wdbLogFile,"\t\tnumInts\t\t%d\n",(int) pBpInfo->numInts); fprintf (wdbLogFile,"\t\t"); bkendLogWdbContext (&pBpInfo->context); fprintf (wdbLogFile,"\t\tpc\t\t0x%x\n",(int) pBpInfo->pc); fprintf (wdbLogFile,"\t\tfp\t\t0x%x\n",(int) pBpInfo->fp); fprintf (wdbLogFile,"\t\tsp\t\t0x%x\n",(int) pBpInfo->sp); if (pBpInfo->numInts > 5) fprintf (wdbLogFile,"\t\taddr\t\t0x%x\n",(int) pBpInfo->addr); }/********************************************************************************* bkendLogWdbCtxExitInfo - log a WDB_CTX_EXIT_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbCtxExitInfo ( WDB_CTX_EXIT_INFO * pWdbCtxExitInfo /* WDB_CTX_EXIT_INFO structure to log */ ) { fprintf (wdbLogFile,"WDB_CTX_EXIT_INFO\n"); fprintf (wdbLogFile,"\t\tnumInts\t\t%d\n",(int) pWdbCtxExitInfo->numInts); fprintf (wdbLogFile,"\t\t"); bkendLogWdbContext (&pWdbCtxExitInfo->context); fprintf (wdbLogFile,"\t\treturnVal\t0x%x\n", (int) pWdbCtxExitInfo->returnVal); fprintf (wdbLogFile,"\t\terrnoVal\t0x%x\n",(int) pWdbCtxExitInfo->errnoVal); }/********************************************************************************* bkendLogWdbCtxStartInfo - log a WDB_CTX_START_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbCtxStartInfo ( WDB_CTX_START_INFO * pWdbCtxStartInfo ) { fprintf (wdbLogFile,"WDB_CTX_START_INFO\n"); fprintf (wdbLogFile,"\t\tnumInts\t\t%d\n",(int) pWdbCtxStartInfo->numInts); fprintf (wdbLogFile,"\t\t"); bkendLogWdbContext (&pWdbCtxStartInfo->createdCtx); fprintf (wdbLogFile,"\t\t"); bkendLogWdbContext (&pWdbCtxStartInfo->creationCtx); }/********************************************************************************* bkendLogWdbTsfsInfo - log a WDB_TSFS_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbTsfsInfo ( WDB_TSFS_INFO * pWdbTsfsInfo /* WDB_TSFS_INFO structure to log */ ) { void (*pTsfsInfoFct) (); fprintf (wdbLogFile,"WDB_TSFS_INFO\n"); fprintf (wdbLogFile,"\t\tWDB_TSFS_GENERIC_INFO\n"); fprintf (wdbLogFile,"\t\tnumInts\t\t%d\n",(int) pWdbTsfsInfo->info.numInts); fprintf (wdbLogFile,"\t\tchannel\t\t%d\n",(int) pWdbTsfsInfo->info.channel); fprintf (wdbLogFile,"\t\topcode\t\t"); bkendLogWdbEnumToString ("TSFS_OPCODE", pWdbTsfsInfo->info.opcode); fprintf (wdbLogFile,"\n"); fprintf (wdbLogFile,"\t\tsemId\t\t%#x\n",(int) pWdbTsfsInfo->info.semId); fprintf (wdbLogFile,"\t\tpResult\t\t%#x\n",(int) pWdbTsfsInfo->info.pResult); fprintf (wdbLogFile,"\t\tpErrno\t\t%#x\n",(int) pWdbTsfsInfo->info.pErrno); switch (pWdbTsfsInfo->info.opcode) { case WDB_TSFS_OPEN: pTsfsInfoFct = bkendLogWdbTsfsOpenInfo; break; case WDB_TSFS_READ: pTsfsInfoFct = bkendLogWdbTsfsRwInfo; break; case WDB_TSFS_WRITE: pTsfsInfoFct = bkendLogWdbTsfsRwInfo; break; case WDB_TSFS_IOCTL: pTsfsInfoFct = bkendLogWdbTsfsIoctlInfo; break; case WDB_TSFS_DELETE: pTsfsInfoFct = bkendLogWdbTsfsDeleteInfo; break; case WDB_TSFS_CLOSE: pTsfsInfoFct = NULL; break; default: pTsfsInfoFct = NULL; break; } if (pTsfsInfoFct != NULL) { fprintf (wdbLogFile,"\t\t"); pTsfsInfoFct (&pWdbTsfsInfo->extra); } }/********************************************************************************* bkendLogWdbTsfsOpenInfo - log a WDB_TSFS_OPEN_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbTsfsOpenInfo ( WDB_TSFS_OPEN_INFO * pWdbTsfsOpenInfo ) { fprintf (wdbLogFile,"WDB_TSFS_OPEN_INFO\n"); fprintf (wdbLogFile,"\t\tfilename\t%#x\n", (int) pWdbTsfsOpenInfo->filename); fprintf (wdbLogFile,"\t\tfnameLen\t%d\n", (int) pWdbTsfsOpenInfo->fnameLen); fprintf (wdbLogFile,"\t\tmode\t\t"); bkendLogWdbEnumToString ("TSFS_OPEN_MODE", (int) pWdbTsfsOpenInfo->mode); fprintf (wdbLogFile,"\n"); fprintf (wdbLogFile,"\t\tperm\t\t%#o\n", (int) pWdbTsfsOpenInfo->perm); }/********************************************************************************* bkendLogWdbTsfsRwInfo - log a WDB_TSFS_RW_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbTsfsRwInfo ( WDB_TSFS_RW_INFO * pWdbTsfsRwInfo ) { fprintf (wdbLogFile,"WDB_TSFS_RW_INFO\n"); fprintf (wdbLogFile,"\t\tbuffer\t\t%#x\n", (int) pWdbTsfsRwInfo->buffer); fprintf (wdbLogFile,"\t\tnBytes\t\t%d\n",(int) pWdbTsfsRwInfo->nBytes); }/********************************************************************************* bkendLogWdbTsfsIoctlInfo - log a WDB_TSFS_IOCTL_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbTsfsIoctlInfo ( WDB_TSFS_IOCTL_INFO * pWdbTsfsIoctlInfo ) { fprintf (wdbLogFile,"WDB_TSFS_IOCTL_INFO\n"); fprintf (wdbLogFile,"\t\trequest\t\t"); bkendLogWdbEnumToString ("TSFS_IOCTL_REQ", pWdbTsfsIoctlInfo->request); fprintf (wdbLogFile,"\n"); fprintf (wdbLogFile,"\t\targ\t\t%d\n",(int) pWdbTsfsIoctlInfo->arg); fprintf (wdbLogFile,"\t\tpExtra1\t\t%#x\n",(int) pWdbTsfsIoctlInfo->pExtra1); fprintf (wdbLogFile,"\t\tpExtra2\t\t%#x\n",(int) pWdbTsfsIoctlInfo->pExtra2); }/********************************************************************************* bkendLogWdbTsfsDeleteInfo - log a WDB_TSFS_DELETE_INFO structure** RETURNS: void.*/LOCAL void bkendLogWdbTsfsDeleteInfo ( WDB_TSFS_DELETE_INFO * pWdbTsfsDeleteInfo ) { fprintf (wdbLogFile,"WDB_TSFS_DELETE_INFO\n"); fprintf (wdbLogFile,"\t\tfilename\t%#x\n", (int) pWdbTsfsDeleteInfo->filename); fprintf (wdbLogFile,"\t\tfnameLen\t%d\n", (int) pWdbTsfsDeleteInfo->fnameLen); }/********************************************************************************* bkendLogWdbUINT32 - log a UINT32 integer** RETURNS: void.*/LOCAL void bkendLogWdbUINT32 ( UINT32 * pUInt32 /* UINT32 to log */ ) { fprintf (wdbLogFile,"UINT32\t\t0x%x\n", *pUInt32); }/********************************************************************************* bkendLogWdbAgentMode - log WDB agent mode ** RETURNS: void.*/LOCAL void bkendLogWdbAgentMode ( TGT_INT_T * pAgentMode /* agent mode to log */ ) { fprintf (wdbLogFile,"mode\t\t"); bkendLogWdbEnumToString ("AGENT_MODE", *pAgentMode); fprintf (wdbLogFile,"\n"); }/********************************************************************************* bkendLogWdbCtxStatus - log WDB context status ** RETURNS: void.*/LOCAL void bkendLogWdbCtxStatus ( TGT_INT_T * pCtxStatus /* context status to log */ ) { fprintf (wdbLogFile,"status\t\t"); bkendLogWdbEnumToString ("CONTEXT_STATUS", *pCtxStatus); fprintf (wdbLogFile,"\n"); }/********************************************************************************* bkendLogWdbTGT_ADDR_T - log a TGT_ADDR_T value** RETURNS: void.*/LOCAL void bkendLogWdbTGT_ADDR_T ( TGT_ADDR_T * pTgtAddr /* TGT_ADDR_T to log */ ) { fprintf (wdbLogFile,"TGT_ADDR_T\t0x%x\n", (UINT32) *pTgtAddr); }/********************************************************************************* bkendLogWdbString - log a WDB_STRING_T string** RETURNS: void.*/LOCAL void bkendLogWdbString ( WDB_STRING_T * pWdbString /* WDB_STRING_T to log */ ) { fprintf (wdbLogFile,"WDB_STRING_T\n"); if (*pWdbString == NULL) fprintf (wdbLogFile,"\t\tstring\t\t{%s}\n", "NULL"); else fprintf (wdbLogFile,"\t\tstring\t\t{%s}\n", *pWdbString); }/******************************************************************************** debugFlagGet - Get the debug mode (for WIN32 serial backend)**** NOMANUAL*/BOOL debugFlagGet (void) { return wpwrDebugModeGet(); }/******************************************************************************** bkendLogWdbEnumToString - print a string from a int** given an int and the name of an enum table, fill the log file with the * corresponding string.** NOMANUAL*/ LOCAL void bkendLogWdbEnumToString ( char * enumType, int enumValue ) { int ix; ENUM_NAME_MAP * pMap; /* look up the map for the given enum type. */ for (ix = 0; ix < NELEMENTS (enumTypeMap); ++ix) { if (!strcmp (enumType, enumTypeMap [ix].enumType)) break; } if (ix == NELEMENTS (enumTypeMap)) return; if (enumTypeMap [ix].allowOr) { int count = 0; for (pMap = enumTypeMap [ix].pEnumNameMap; pMap->enumLongName; ++pMap) { if ((enumValue & pMap->enumInt) == pMap->enumInt) { if (count != 0) fprintf (wdbLogFile, "|"); fprintf (wdbLogFile, pMap->enumLongName); ++count; /* strip the bit out of the given value. When we're done, we'll append the residue. */ enumValue &= ~ pMap->enumInt; } } if (enumValue != 0) { /* There were leftover bits. Just append the residue in hex. */ if (count != 0) fprintf (wdbLogFile, "|"); fprintf (wdbLogFile, "%#x", enumValue); } return; } else { /* check the string forms of the enum. */ for (pMap = enumTypeMap [ix].pEnumNameMap; pMap->enumLongName; ++pMap) { if (pMap->enumInt == enumValue) { fprintf (wdbLogFile, pMap->enumLongName); return; } } } /* Wasn't a bitvector, and didn't match any scalars. Just put the number out */ fprintf (wdbLogFile, "%d", enumValue); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -