The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/pms/RefTisa/sallsdk/spc/mpidebug.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*******************************************************************************
    2 *Copyright (c) 2014 PMC-Sierra, Inc.  All rights reserved. 
    3 *
    4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided 
    5 *that the following conditions are met: 
    6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
    7 *following disclaimer. 
    8 *2. Redistributions in binary form must reproduce the above copyright notice, 
    9 *this list of conditions and the following disclaimer in the documentation and/or other materials provided
   10 *with the distribution. 
   11 *
   12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED 
   13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
   16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
   17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
   18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
   19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
   20 *
   21 * $FreeBSD$
   22 *
   23 ********************************************************************************/
   24 
   25 /*******************************************************************************/
   26 /*! \file mpidebug.h
   27  *  \brief The file defines the debug constants and structures
   28  *
   29  */
   30 /*******************************************************************************/
   31 
   32 #ifndef __MPIDEBUG_H__
   33 #define __MPIDEBUG_H__
   34 
   35 /*******************************************************************************/
   36 #define MPI_DEBUG_TRACE_BUFFER_MAX  1024
   37 #define MPI_DEBUG_TRACE_OB_IOMB_SIZE   128 /* 64 */
   38 #define MPI_DEBUG_TRACE_IB_IOMB_SIZE   128 /* 64 */
   39 #define MPI_DEBUG_TRACE_IBQ   1
   40 #define MPI_DEBUG_TRACE_OBQ   0
   41 #define MPI_DEBUG_TRACE_QNUM_ERROR   100 /* Added to Qnumber to indicate error */
   42 
   43 typedef struct mpiObDebugTraceEntry_s
   44 {
   45   bit64       Time;
   46   bit32       QNum;
   47   bit32       pici;
   48   void *      pEntry;
   49   bit32       Iomb[MPI_DEBUG_TRACE_OB_IOMB_SIZE/4];
   50 } mpiDebugObTraceEntry_t;
   51 
   52 typedef struct mpiIbDebugTraceEntry_s
   53 {
   54   bit64       Time;
   55   bit32       QNum;
   56   bit32       pici;
   57   void *      pEntry;
   58   bit32       Iomb[MPI_DEBUG_TRACE_IB_IOMB_SIZE/4];
   59 } mpiDebugIbTraceEntry_t;
   60 
   61 typedef struct mpiIbDebugTrace_s
   62 {
   63   bit32                 Idx;
   64   bit32                 Pad;
   65   mpiDebugIbTraceEntry_t  Data[MPI_DEBUG_TRACE_BUFFER_MAX];
   66 } mpiDebugIbTrace_t;
   67 
   68 typedef struct mpiObDebugTrace_s
   69 {
   70   bit32                 Idx;
   71   bit32                 Pad;
   72   mpiDebugObTraceEntry_t  Data[MPI_DEBUG_TRACE_BUFFER_MAX];
   73 } mpiDebugObTrace_t;
   74 
   75 void mpiTraceInit(void);
   76 void mpiTraceAdd(bit32 q,bit32 pici,bit32 ib, void *iomb, bit32 numBytes);
   77 
   78 #endif /* __MPIDEBUG_H__ */
   79 
   80 
   81 
   82 
   83 /********************************************************************
   84 **  File that contains debug-specific APIs ( driver tracing etc )
   85 *********************************************************************/
   86 
   87 #ifndef __SPCDEBUG_H__
   88 #define __SPCDEBUG_H__
   89 
   90 
   91 /*
   92 ** console and trace levels
   93 */
   94 
   95 #define  hpDBG_ALWAYS     0x0000ffff
   96 #define  hpDBG_IOMB       0x00000040
   97 #define  hpDBG_REGISTERS  0x00000020
   98 #define  hpDBG_TICK_INT   0x00000010
   99 #define  hpDBG_SCREAM     0x00000008
  100 #define  hpDBG_VERY_LOUD  0x00000004
  101 #define  hpDBG_LOUD       0x00000002
  102 #define  hpDBG_ERROR      0x00000001
  103 #define  hpDBG_NEVER      0x00000000
  104 
  105 #define smTraceDestBuffer    0x00000001
  106 #define smTraceDestRegister  0x00000002
  107 #define smTraceDestDebugger  0x00000004
  108 
  109 
  110 #define siTraceDestMask     (smTraceDestBuffer    |  \
  111                              smTraceDestRegister  |  \
  112                              smTraceDestDebugger)
  113 
  114 /* Trace buffer will continuously  */
  115 /* trace and wrap-around on itself */
  116 /* when it reaches the end         */
  117 #define hpDBG_TraceBufferWrapAround   0x80000000
  118 /* This features enables logging of trace time       */
  119 /* stamps.  Only certain key routines use this       */
  120 /* feature because it tends to clog up the trace     */
  121 /* buffer.                                           */
  122 #define hpDBG_TraceBufferUseTimeStamp 0x40000000
  123 /* This features enables logging of trace sequential */
  124 /* stamps.  Only certain key routines use this       */
  125 /* feature because it tends to clog up the trace     */
  126 /* buffer.                                           */
  127 #define hpDBG_TraceBufferUseSequenceStamp 0x20000000
  128 
  129 /* Trace IDs of various state machines */
  130 #define fiTraceSmChip   'C'
  131 #define fiTraceSmPort   'P'
  132 #define fiTraceSmLogin  'L'
  133 #define fiTraceSmXchg   'X'
  134 #define fiTraceSmFabr   'F'
  135 #define fiTraceDiscFab  'D'
  136 #define fiTraceDiscLoop 'M'
  137 #define fiTraceFc2      'A'
  138 #define fiTraceTgtState 'S'
  139 #define fiTraceIniState 'I'
  140 
  141 /* Trace IDs of various queues  */
  142 #define fiSfsFreeList   'Z'
  143 #define fiSestFreeList  'W'
  144 #define fiOsSfsFreeList 'G'
  145 #define fiLgnFreeList   'K'
  146 #define fiPortalFreeList  'l'
  147 #define fiBusyList      'N'
  148 #define fiOsSfsAllocList     'B'
  149 #define fiTimerList         'V'
  150 #define fiSfsWaitForRspList 'I'
  151 #define fiLgnBusyList   'J'
  152 #define fiPortalBusyList  'g'
  153 #define fiWait4ErqList  'o'
  154 #define fiXchgAbortList   'U'
  155 #define fiXchgWaitList 'b'
  156 
  157 /* not used right now */
  158 #define fiSfsDeferFreeList  'q'
  159 #define fiDeferBusyList     'm'
  160 #define fiInvalidList   'X'
  161 #define fiInvalidatedList   'a'
  162 #define fiTmpXchList    'n'
  163 
  164 #define TMP_TRACE_BUFF_SIZE  32
  165 #define FC_TRACE_LINE_SIZE   70
  166 /******************************************************************************/
  167 /* Macro Conventions:  we are assuming that the macros will be called inside  */
  168 /*                     a function that already has a workable saRoot variable */
  169 /******************************************************************************/
  170 
  171 /******************************************************************************/
  172 /* fiTraceState : ==>        _!n_        _ss: XXXXXXXX       _se: XXXXXXXX    */
  173 /*              statemachine --^     currentstate--^    triggerevent--^       */
  174 /*              NOTE: shorthand forms available as macros below.              */
  175 /******************************************************************************/
  176 #ifdef SA_ENABLE_TRACE_FUNCTIONS
  177 
  178 
  179 void siResetTraceBuffer(agsaRoot_t  *agRoot);
  180 void siTraceFuncEnter(agsaRoot_t  *agRoot, bit32 mask, bit32 fileid, char *funcid);
  181 
  182 
  183 GLOBAL void siTraceFuncExit(   agsaRoot_t  *agRoot,  bit32   mask, char  fileid, char  * funcid, char  exitId );
  184 
  185 
  186 void siTrace(agsaRoot_t  *agRoot, bit32 mask, char *uId, bit32 value, bit32 dataSizeInBits);
  187 void siTrace64(agsaRoot_t  *agRoot, bit32 mask, char *uId, bit64 value, bit32 dataSizeInBits);
  188 bit32 siGetCurrentTraceIndex(agsaRoot_t  *agRoot);
  189 void siTraceListRemove(agsaRoot_t  *agRoot, bit32 mask, char listId, bitptr exchangeId);
  190 void siTraceListAdd(agsaRoot_t  *agRoot, bit32 mask, char listId, bitptr exchangeId);
  191 void siTraceState(agsaRoot_t  *agRoot, bit32 mask, bit32 statemachine, bit32 currentstate, bit32 triggerevent);
  192 
  193 #define smTraceState(L,S,C,T)     siTraceState(agRoot,L,S,C,T)
  194 #define smTraceChipState(L,C,T)   siTraceState(agRoot,L,fiTraceSmChip,C,T)
  195 #define smTraceFabricState(L,C,T) siTraceState(agRoot,L,fiTraceSmFabr,C,T)
  196 #define smTracePortState(L,C,T)   siTraceState(agRoot,L,fiTraceSmPort,C,T)
  197 #define smTraceLoginState(L,C,T)  siTraceState(agRoot,L,fiTraceSmLogin,C,T)
  198 #define smTraceXchgState(L,C,T)   siTraceState(agRoot,L,fiTraceSmXchg,C,T)
  199 #define smTraceDiscFabState(L,C,T)    siTraceState(agRoot,L,fiTraceDiscFab,C,T)
  200 #define smTraceDiscLoopState(L,C,T)   siTraceState(agRoot,L,fiTraceDiscLoop,C,T)
  201 #define smTraceFc2State(L,C,T)    siTraceState(agRoot,L,fiTraceFc2,C,T)
  202 #define smTraceScsiTgtState(L,C,T)    siTraceState(agRoot,L,fiTraceTgtState,C,T)
  203 #define smTraceScsiIniState(L,C,T)    siTraceState(agRoot,L,fiTraceIniState,C,T)
  204 
  205 #define smResetTraceBuffer(L)   siResetTraceBuffer(L)
  206 #define smTraceFuncEnter(L,I)  siTraceFuncEnter(agRoot,L,siTraceFileID,I)
  207 #define smTraceFuncExit(L,S,I)  siTraceFuncExit(agRoot,L,siTraceFileID,I,S)
  208 #define smGetCurrentTraceIndex(L)   siGetCurrentTraceIndex(L)
  209 #define smTraceListRemove(R,L,I,V)   siTraceListRemove(R,L,I,V)
  210 #define smTraceListAdd(R,L,I,V)   siTraceListAdd(R,L,I,V)
  211 
  212 #define smTrace(L,I,V)                                        \
  213     /*lint -e506 */                                           \
  214     /*lint -e774 */                                           \
  215     if (sizeof(V) == 8) {siTrace64(agRoot,L,I,(bit64)V,64);}  \
  216     else {siTrace(agRoot,L,I,(bit32)V,32);}                   \
  217     /*lint +e506 */                                           \
  218     /*lint +e774 */
  219 
  220 
  221 #else
  222 
  223 #define siTraceState(agRoot,L,fiTraceSmXchg,C,T)
  224 
  225 #define smTraceState(L,S,C,T)
  226 #define smTraceChipState(L,C,T)
  227 #define smTraceFabricState(L,C,T)
  228 #define smTracePortState(L,C,T)
  229 #define smTraceLoginState(L,C,T)
  230 #define smTraceXchgState(L,C,T)
  231 #define smTraceDiscFabState(L,C,T)
  232 #define smTraceDiscLoopState(L,C,T)
  233 #define smTraceFc2State(L,C,T)
  234 #define smTraceScsiTgtState(L,C,T)
  235 #define smTraceScsiIniState(L,C,T)
  236 
  237 #define smResetTraceBuffer(agRoot)
  238 #define smTraceFuncEnter(L,I)
  239 #define smTraceFuncExit(L,S,I)
  240 #define smGetCurrentTraceIndex(L)
  241 #define smTraceListRemove(L,I,V)
  242 #define smTraceListAdd(L,I,V)
  243 
  244 #define smTrace(L,I,V)
  245 
  246 #endif
  247 
  248 struct hpTraceBufferParms_s {
  249   bit32 TraceCompiled;
  250   bit32 BufferSize;
  251   bit32 CurrentTraceIndexWrapCount;
  252   bit32 CurrentIndex;
  253   bit32 TraceWrap;
  254   bit8  * pTrace;
  255   bit32 * pCurrentTraceIndex;
  256   bit32 * pTraceIndexWrapCount;
  257   bit32 * pTraceMask;
  258 };
  259 typedef struct hpTraceBufferParms_s
  260                hpTraceBufferParms_t;
  261 
  262 #ifdef SA_ENABLE_TRACE_FUNCTIONS
  263 
  264 GLOBAL void siTraceGetInfo(agsaRoot_t  *agRoot, hpTraceBufferParms_t * pBParms);
  265 
  266 #define smTraceGetInfo(R,P)  siTraceGetInfo(R,P)
  267 #else
  268 #define smTraceGetInfo(R,P)
  269 #endif
  270 
  271 
  272 void siEnableTracing ( agsaRoot_t  *agRoot );
  273 #ifdef SA_ENABLE_TRACE_FUNCTIONS
  274 
  275 GLOBAL void siTraceSetMask(agsaRoot_t  *agRoot, bit32 TraceMask  );
  276 
  277 #define smTraceSetMask(R,P)  siTraceSetMask(R,P)
  278 #else
  279 #define smTraceSetMask(R,P)
  280 #endif /* SA_ENABLE_TRACE_FUNCTIONS */
  281 
  282 #endif /* #ifndef __SPCDEBUG_H__ */
  283 

Cache object: a43543d705625e5ffd3e9e11b7758fba


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.