tw_cli_ints.c
上传用户:hujq123
上传日期:2016-04-10
资源大小:153k
文件大小:5k
源码类别:

Telnet服务器

开发平台:

Unix_Linux

  1. /* 
  2.  * Copyright (C) 2002 Koninklijke Philips Electronics N.V., 
  3.  * All Rights Reserved. 
  4.  *
  5.  * This source code and any compilation or derivative thereof is the 
  6.  * proprietary information of Koninklijke Philips Electronics N.V. 
  7.  * and is confidential in nature. 
  8.  * Under no circumstances is this software to be exposed to or placed 
  9.  * under an Open Source License of any type without the expressed 
  10.  * written permission of Koninklijke Philips Electronics N.V. 
  11.  * 
  12.  *###########################################################
  13.  */ 
  14. /*! 
  15.  *      file           tw_cli_ints.c 
  16.  * 
  17.  *      brief          - 
  18.  * 
  19.  */ 
  20. /*-----------------------------------------------------------*
  21.  * 
  22.  *      %version:       3 % 
  23.  *      instance:       DS_6 
  24.  *      %date_created:  Fri Feb 21 08:04:30 2003 % 
  25.  *
  26.  *###########################################################
  27.  */ 
  28. /*****************************************************************************
  29. * tw_cli_ints.c - Command line interface commands for interrupt management
  30. *
  31. * Description:
  32. *   
  33. *
  34. *
  35. *****************************************************************************/
  36. #include <stdio.h>
  37. #include <string.h>
  38. #include <tw_cli.h>
  39. #include <pci_intr.h>
  40. /*****************************************************************************
  41. *
  42. * Defines, constants, structures.
  43. *
  44. *****************************************************************************/
  45. /*****************************************************************************
  46. *
  47. * Local prototypes
  48. *
  49. *****************************************************************************/
  50. int CliCoProc_IntStats(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  51. int CliCoVoProc_IntLogThreshold(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  52. int CliCoProc_IntOffenders(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr);
  53. /*****************************************************************************
  54. *
  55. * Globals
  56. *
  57. *****************************************************************************/
  58. /*
  59. ** 2nd level CLI Command Option - vr "stats"
  60. */
  61. Cli_CmdStruct_t  CliCo_IntStats = 
  62. {
  63.     "stats",
  64.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  65.     NULL,
  66.     "Display stats on interrupt activity",
  67.     NULL,
  68.     CliCoProc_IntStats,
  69.     NULL
  70. };
  71. /*
  72. ** 2nd level CLI Command Option - vr "log_threshold"
  73. */
  74. Cli_CmdStruct_t  CliCo_IntLogThreshold = 
  75. {
  76.     "log_threshold",
  77.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  78.     NULL,
  79.     "Set interval for int disable warning THRESHOLD",
  80.     NULL,
  81.     NULL,
  82.     CliCoVoProc_IntLogThreshold
  83. };
  84. /*
  85. ** 2nd level CLI Command Option - vr "offenders"
  86. */
  87. Cli_CmdStruct_t  CliCo_IntOffenders = 
  88. {
  89.     "offenders",
  90.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  91.     NULL,
  92.     "Clears interrupt statistics",
  93.     NULL,
  94.     CliCoProc_IntOffenders,
  95.     NULL
  96. };
  97. /*
  98. ** 1st level CLI Command Option - "int" 
  99. */
  100. Cli_CmdStruct_t *CliRcoOptionList_Int[] = 
  101. {
  102.     &CliCo_IntStats,
  103.     &CliCo_IntLogThreshold,
  104.     &CliCo_IntOffenders,
  105.     NULL
  106. };
  107. Cli_CmdStruct_t  CliRco_Ints = 
  108. {
  109.     "int",
  110.     ALL_ACCESS_MODE | ALL_PRODUCT_TYPE,
  111.     CliRcoOptionList_Int,
  112.     "Interrupt management commands",
  113.     NULL,
  114.     NULL,
  115.     NULL
  116. };
  117. /*****************************************************************************
  118. * CliCoProc_IntMax - Display maximum interrupt disable interval
  119. *
  120. * Globals:
  121. *   
  122. * Returns:
  123. *   int - 0 on success, -1 on failure.
  124. *
  125. * Description:
  126. *   
  127. *
  128. * History:
  129. *   12/19/99    MA      Original version
  130. *
  131. *****************************************************************************/
  132. int CliCoProc_IntStats(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  133. {
  134.     int iHandler;
  135.     
  136.     if (Cli_Printf(pSess, "   Max cycles with interrupts off: %un",
  137.                    TwInts_MaxDisableInterval) < 0)
  138.     {
  139.         return -1;
  140.     }
  141.     if (Cli_Printf(pSess, "   (task %s isr 0x%02x DisablePC %08x EnablePC %08x)n",
  142.                    TwInts_MaxDisableName, 
  143.                    TwInts_MaxDisableMask,
  144.                    TwInts_MaxDisablePC,
  145.                    TwInts_MaxEnablePC) < 0)
  146.     {
  147.         return -1;
  148.     }
  149.     if (Cli_Printf(pSess, 
  150.                      "     Isr     id          Max         Min         Avg        Raten") < 0)
  151.     {
  152.         return -1;
  153.     }
  154.     if (Cli_Printf(pSess, 
  155.                          "   -------------------------------------------------------------n") < 0)
  156.     {
  157.         return -1;
  158.     }
  159.     return 0;
  160. }
  161. /*****************************************************************************
  162. * CliCoVoProc_IntLogThreshold - Set logging threshold for interrupt disable interval
  163. *
  164. * Returns:
  165. *   int - 0 on success, -1 on failure.
  166. *
  167. * Description:
  168. *   
  169. *
  170. * History:
  171. *   12/7/99     MA  Original version
  172. *
  173. *****************************************************************************/
  174. int CliCoVoProc_IntLogThreshold(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  175. {
  176.     int NewThreshold;
  177.     if (sscanf(CmdStr + Ptr, "%lu", &NewThreshold) != 1) 
  178.     {
  179.         return Cli_Printf(pSess, badParamStr);
  180.     }
  181.     
  182.     TwInts_MaxDisableIntervalThreshold = NewThreshold;
  183.     
  184.     return 0;
  185. }
  186. /*+***************************************************************************
  187. * CliCoProc_Offenders - Print top interrupt disable offenders
  188. *
  189. * Globals:
  190. *   
  191. * Returns:
  192. *   int - 0 on success, -1 on failure.
  193. *
  194. * Description:
  195. *   
  196. *
  197. * History:
  198. *   2/23/00    jvs  Original version
  199. *
  200. **-**************************************************************************/
  201. int CliCoProc_IntOffenders(Cli_cmdSession_t *pSess, char *CmdStr, int Ptr)
  202. {
  203.     TwInts_PrintOffenders((TwInts_Printf_t) Cli_Printf, (void *) pSess) ;
  204.     return 0;
  205. }