36#ifdef MPI_DEBUG_TRACE_ENABLE
40#ifdef OSLAYER_USE_HI_RES_TIMER
42GetHiResTimeStamp(
void);
54 SA_DBG1((
"mpiTraceInit:obTraceData @ %p\n",&obTraceData ));
55 SA_DBG1((
"mpiTraceInit:ibTraceData @ %p\n",&ibTraceData ));
56 SA_DBG1((
"mpiTraceInit: num enties %d Ib Iomb size %d Ob Iomb size %d\n",
61 si_memset(&obTraceData, 0,
sizeof(obTraceData));
62 si_memset(&ibTraceData, 0,
sizeof(ibTraceData));
80 curIdx = ibTrace->
Idx;
82 curIbTrace = &ibTrace->
Data[curIdx];
85 curIbTrace->
pici = pici;
86#ifdef OSLAYER_USE_HI_RES_TIMER
87#ifdef SA_64BIT_TIMESTAMP
104 curIdx = obTrace->
Idx;
105 curObTrace = &obTrace->
Data[curIdx];
106 curObTrace->
pEntry = iomb;
107 curObTrace->
QNum = q;
108 curObTrace->
pici = pici;
109#ifdef OSLAYER_USE_HI_RES_TIMER
110#ifdef SA_64BIT_TIMESTAMP
116 curObTrace->
Time = 0;
130#ifdef SA_ENABLE_TRACE_FUNCTIONS
147 if( saRoot->TraceBlockReInit != 0)
155 for (count = 0; count < 10; count++)
157 saRoot->traceBuffLookup[count] = (
bit8)(
'0' + count);
159 for (count = 0; count < 6; count++)
161 saRoot->traceBuffLookup[(
bitptr)count + 10] = (
bit8)(
'a' + count);
165 saRoot->TraceDestination = swC->TraceDestination;
166 saRoot->TraceMask = swC->TraceMask;
167 saRoot->CurrentTraceIndexWrapCount = 0;
168 saRoot->CurrentTraceIndex = 0;
169 saRoot->TraceBlockReInit = 1;
172 SA_DBG1((
"siEnableTracing: \n" ));
174 SA_DBG1 ((
" length = %08x\n", saRoot->TraceBufferLength ));
175 SA_DBG1 ((
" virt = %p\n", saRoot->TraceBuffer ));
176 SA_DBG1 ((
" traceMask = %08x @ %p\n", saRoot->TraceMask, &saRoot->TraceMask));
177 SA_DBG1 ((
" last trace entry @ %p\n", &saRoot->CurrentTraceIndex));
179 SA_DBG1 ((
" da %p l %x\n",saRoot->TraceBuffer ,saRoot->TraceBufferLength));
181#ifdef SA_PRINTOUT_IN_WINDBG
183 DbgPrint(
"siTraceEnable: \n" );
185 DbgPrint(
" length = %08x\n", saRoot->TraceBufferLength );
186 DbgPrint(
" virt = %p\n", saRoot->TraceBuffer );
187 DbgPrint(
" last trace entry @ %p\n", &saRoot->CurrentTraceIndex);
188 DbgPrint(
" traceMask = %08x @ %p\n", saRoot->TraceMask, &saRoot->TraceMask);
189 DbgPrint(
" da %p l %x\n",saRoot->TraceBuffer ,saRoot->TraceBufferLength);
195 for (count = 0; count < saRoot->TraceBufferLength; count++)
197 saRoot->TraceBuffer[count] = (
bit8)
' ';
226 if ( (saRoot != NULL) && \
227 (saRoot->TraceDestination & siTraceDestMask) && \
228 (mask & saRoot->TraceMask) ) \
233#define TRACE_ENTER_LOCK
234#define TRACE_LEAVE_LOCK
241#define BUFFER_WRAP_CHECK \
242 if( (saRoot->CurrentTraceIndex + TMP_TRACE_BUFF_SIZE) \
243 >= saRoot->TraceBufferLength ) \
246 if( saRoot->TraceMask & hpDBG_TraceBufferWrapAround ) \
249 for( i = saRoot->CurrentTraceIndex; \
250 i < saRoot->TraceBufferLength; i++ ) \
252 saRoot->TraceBuffer[i] = (bit8)' '; \
255 saRoot->CurrentTraceIndex = 0; \
256 saRoot->CurrentTraceIndexWrapCount++; \
286 #define LOCAL_OS_LOG_DEBUG_STRING(H,S) \
287 osLogDebugString(H,hpDBG_ALWAYS,(char *)(S))
298#define copyHex(bit32Val, bitSize) \
300 bit32 nibbleLen = bitSize / 4; \
302 for( i = 0; i < nibbleLen; i++ ) \
305 saRoot->traceBuffLookup[0xf & (bit32Val >> ((bitSize - 4) - (i << 2)))]; \
308 saRoot->traceBuffLookup[0xf & (bit32Val >> ((bitSize - 4) - (i << 2)))]; \
311 && (bPtr[pos-2] == '0') \
312 && (bPtr[pos-1] == '0') ) \
338#define TRACE_OTHER_DEST \
340 bit32 bitptrscratch; \
341 if( saRoot->TraceDestination & smTraceDestDebugger ) \
343 bPtr[pos++] = (bit8)'\n'; \
344 bPtr[pos++] = (bit8)0; \
345 LOCAL_OS_LOG_DEBUG_STRING(hpRoot, (char *)bPtr); \
347 if( saRoot->TraceDestination & smTraceDestRegister ) \
349 while( (pos & 0x3) != 0x3 ) \
351 bPtr[pos++] = (bit8)' '; \
354 for( i = 0; i < pos; i = i + 4 ) \
356 bitptrscratch = bPtr[i+0]; \
357 bitptrscratch <<= 8; \
358 bitptrscratch |= bPtr[i+1]; \
359 bitptrscratch <<= 8; \
360 bitptrscratch |= bPtr[i+2]; \
361 bitptrscratch <<= 8; \
362 bitptrscratch |= bPtr[i+3]; \
363 osChipRegWrite(hpRoot, \
364 FC_rFMReceivedALPA, (bit32)bitptrscratch ); \
399 return(saRoot->CurrentTraceIndex);
418 saRoot->CurrentTraceIndex = 0;
420 for ( count = 0; count < saRoot->TraceBufferLength; count++ )
422 saRoot->TraceBuffer[count] = (
bit8)
' ';
458#define TMP_TRACE_BUFF_SIZE 32
478 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
484 bPtr[pos++] = (
bit8)
'[';
486#ifndef FC_DO_NOT_INCLUDE_FILE_NAME_TAGS_IN_ENTER_EXIT_TRACE
487 bPtr[pos++] = (
bit8)fileid;
490 for ( i=0; i<4; i++ )
492 if ( funcid[i] == 0 )
496 bPtr[pos++] = (
bit8)funcid[i];
503 saRoot->traceLineFeedCnt = 0;
505 saRoot->CurrentTraceIndex += pos;
545GLOBAL void siTraceFuncExit(
agsaRoot_t *agRoot,
bit32 mask,
char fileid,
char * funcid,
char exitId )
560 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
567#ifndef FC_DO_NOT_INCLUDE_FILE_NAME_TAGS_IN_ENTER_EXIT_TRACE
568 bPtr[pos++] = (
bit8)fileid;
571 for ( i=0; i<4; i++ )
573 if ( funcid[i] == 0 )
577 bPtr[pos++] = (
bit8)funcid[i];
579 bPtr[pos++] = (
bit8)exitId;
580 bPtr[pos++] = (
bit8)
']';
581 bPtr[pos++] = (
bit8)
' ';
586 saRoot->traceLineFeedCnt = 0;
588 saRoot->CurrentTraceIndex += pos;
639 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
645 bPtr[pos++] = (
bit8)
'<';
646 bPtr[pos++] = (
bit8)listId;
647 copyHex(exchangeId, 32);
648 bPtr[pos++] = (
bit8)
' ';
653 saRoot->traceLineFeedCnt = 0;
655 saRoot->CurrentTraceIndex += pos;
707 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
713 bPtr[pos++] = (
bit8)
'>';
714 bPtr[pos++] = (
bit8)listId;
715 copyHex(exchangeId, 32);
716 bPtr[pos++] = (
bit8)
' ';
721 saRoot->traceLineFeedCnt = 0;
723 saRoot->CurrentTraceIndex += pos;
764 bit32 dataSizeInBits)
778 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
784 bPtr[pos++] = (
bit8)
'"';
785 bPtr[pos++] = (
bit8)uId[0];
786 bPtr[pos++] = (
bit8)uId[1];
787 bPtr[pos++] = (
bit8)
':';
788 copyHex(value, dataSizeInBits);
789 bPtr[pos++] = (
bit8)
' ';
794 saRoot->traceLineFeedCnt = 0;
796 saRoot->CurrentTraceIndex += pos;
839 bit32 dataSizeInBits)
854 bPtr = &saRoot->TraceBuffer[saRoot->CurrentTraceIndex];
860 bPtr[pos++] = (
bit8)
'"';
861 bPtr[pos++] = (
bit8)uId[0];
862 bPtr[pos++] = (
bit8)uId[1];
863 bPtr[pos++] = (
bit8)
':';
864 copyHex(value, dataSizeInBits);
865 bPtr[pos++] = (
bit8)
' ';
870 saRoot->traceLineFeedCnt = 0;
872 saRoot->CurrentTraceIndex += pos;
888 pBParms->
TraceWrap = saRoot->TraceMask & 0x80000000;
890 pBParms->
BufferSize = saRoot->TraceBufferLength;
892 pBParms->
pTrace = saRoot->TraceBuffer;
902 saRoot->TraceMask = TraceMask;
#define MIN(a, b)
MIN macro.
#define MPI_DEBUG_TRACE_BUFFER_MAX
void siEnableTracing(agsaRoot_t *agRoot)
void mpiTraceAdd(bit32 q, bit32 pici, bit32 ib, void *iomb, bit32 numBytes)
#define smTraceDestBuffer
#define FC_TRACE_LINE_SIZE
#define TMP_TRACE_BUFF_SIZE
#define MPI_DEBUG_TRACE_IB_IOMB_SIZE
#define MPI_DEBUG_TRACE_OB_IOMB_SIZE
#define hpDBG_TraceBufferWrapAround
#define OS_ASSERT(expr, message)
This file defines global types.
GLOBAL bit32 ossaTimeStamp(agsaRoot_t *agRoot)
GLOBAL bit64 ossaTimeStamp64(agsaRoot_t *agRoot)
GLOBAL FORCEINLINE void * si_memcpy(void *dst, void *src, bit32 count)
memcopy
GLOBAL FORCEINLINE void * si_memset(void *s, int c, bit32 n)
memset
data structure stores OS specific and LL specific context
bit32 * pTraceIndexWrapCount
bit32 CurrentTraceIndexWrapCount
bit32 * pCurrentTraceIndex
bit32 Iomb[MPI_DEBUG_TRACE_IB_IOMB_SIZE/4]
mpiDebugIbTraceEntry_t Data[MPI_DEBUG_TRACE_BUFFER_MAX]
bit32 Iomb[MPI_DEBUG_TRACE_OB_IOMB_SIZE/4]
mpiDebugObTraceEntry_t Data[MPI_DEBUG_TRACE_BUFFER_MAX]