IPMI_Main.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /****************************************************************
  2. ****************************************************************
  3. ** **
  4. ** (C)Copyright 2005-2006, American Megatrends Inc. **
  5. ** **
  6. ** All Rights Reserved. **
  7. ** **
  8. ** 6145-F, Northbelt Parkway, Norcross, **
  9. ** **
  10. ** Georgia - 30071, USA. Phone-(770)-246-8600. **
  11. ** **
  12. ****************************************************************
  13. *****************************************************************
  14. *
  15. * IPMI_Main.h
  16. * IPMI_Main external declarations.
  17. *
  18. * Author: Bakka Ravinder Reddy <bakkar@ami.com>
  19. *
  20. *****************************************************************/
  21. #ifndef IPMI_MAIN_H
  22. #define IPMI_MAIN_H
  23. #include "Types.h"
  24. #include "Support.h"
  25. //#include "OSPort.h"
  26. #pragma pack( 1 )
  27. #define AMI_BIN_PATH "/usr/local/bin/"
  28. #define MSG_PIPES_PATH "/var/"
  29. #define NV_DIR_PATH "/conf/BMC"
  30. #define SP_BIN_PATH "/conf/"
  31. #define MUTEX_PATH "/var/"
  32. #define DEFAULT_CONFIG_PATH "/etc/defconfig/"
  33. #define IPMI_PID_PATH "/var/IPMIPid"
  34. /* Task ID */
  35. #define MSG_HNDLR_TASK_ID 1
  36. #define CHASSIS_CTRL_TASK_ID 2
  37. #define CHASSIS_TIMER_TASK_ID 3
  38. #define KCS_IFC_TASK_ID 4
  39. #define LAN_IFC_TASK_ID 5
  40. #define SERIAL_IFC_TASK_ID 6
  41. #define IPMB_IFC_TASK_ID 7
  42. #define SOL_IFC_TASK_ID 8
  43. #define TERMINAL_IFC_TASK_ID 9
  44. #define PEF_TASK_ID 10
  45. #define TIMER_TASK_ID 11
  46. /* Task Path */
  47. #define TERMINAL_IFC_TASK AMI_BIN_PATH "Terminal"
  48. /* LPCRESET lib Path */
  49. #define RESET_LIB "/usr/local/lib/libreset.so"
  50. /*Messaging pipes path*/
  51. #define MSG_HNDLR_Q MSG_PIPES_PATH "MsgHndlrQ"
  52. #define RCV_MSG_Q_01 MSG_PIPES_PATH "RcvMsgQ01"
  53. #define RCV_MSG_Q_10 MSG_PIPES_PATH "RcvMsgQ10"
  54. #define RCV_MSG_Q_11 MSG_PIPES_PATH "RcvMsgQ11"
  55. #define EVT_MSG_Q MSG_PIPES_PATH "EvtMsgQ"
  56. #define PEF_RES_Q MSG_PIPES_PATH "PEFResQ"
  57. #define PEF_TASK_Q MSG_PIPES_PATH "PEFTaskQ"
  58. #define PEND_TASK_Q MSG_PIPES_PATH "PendTaskQ"
  59. #define KCS1_RES_Q MSG_PIPES_PATH "KCS1ResQ"
  60. #define KCS2_RES_Q MSG_PIPES_PATH "KCS2ResQ"
  61. #define KCS3_RES_Q MSG_PIPES_PATH "KCS3ResQ"
  62. #define IPMB_PRIMARY_IFC_Q MSG_PIPES_PATH "IPMBPrimaryIfcQ"
  63. #define IPMB_PRIMARY_RES_Q MSG_PIPES_PATH "IPMBPrimaryResQ"
  64. #define ICMB_IFC_Q MSG_PIPES_PATH "ICMBIfcQ"
  65. #define ICMB_RES_Q MSG_PIPES_PATH "ICMBResQ"
  66. #define LAN_IFC_Q MSG_PIPES_PATH "LANIfcQ"
  67. #define LAN_RES_Q MSG_PIPES_PATH "LANResQ"
  68. #define LAN_MON_Q MSG_PIPES_PATH "LANMonQ"
  69. #define SERIAL_IFC_Q MSG_PIPES_PATH "SerialIfcQ"
  70. #define SERIAL_RES_Q MSG_PIPES_PATH "SerialResQ"
  71. #define SOL_IFC_Q MSG_PIPES_PATH "SOLIfcQ"
  72. #define CHASSIS_CTRL_Q MSG_PIPES_PATH "ChassisCtrlQ"
  73. #define PDK_API_Q MSG_PIPES_PATH "PDKAPIQ"
  74. #define USB_RES_Q MSG_PIPES_PATH "USBResQ"
  75. #define IPMB0_Recv_Q MSG_PIPES_PATH "IPMB0RecvQ"
  76. #define BT_RES_Q MSG_PIPES_PATH "BTResQ"
  77. #define IPMI_START_SYNC_Q MSG_PIPES_PATH "IpmiSyncQ"
  78. #define TIMER_Q MSG_PIPES_PATH "TimerQ"
  79. #define SM_HNDLR_Q MSG_PIPES_PATH "SM_Hndlr_Q"
  80. #define VLAN_IFC_Q MSG_PIPES_PATH "VLAN_Info_Notify_Q"
  81. #define UDS_IFC_Q MSG_PIPES_PATH "UDS_IFC_Q"
  82. #define UDS_RES_Q MSG_PIPES_PATH "UDS_RES_Q"
  83. #define SOCKET_PATH MSG_PIPES_PATH "UDSocket"
  84. #define OP_STATE_Q MSG_PIPES_PATH "OpStateQ"
  85. /*CMM OBSM Queue*/
  86. //#define OBSM_TASK_Q MSG_PIPES_PATH "OBSMTaskQ"
  87. #define OBSM_TASK_RES_Q MSG_PIPES_PATH "OBSMTaskResQ"
  88. #define OBSM_PWR_TASK_Q MSG_PIPES_PATH "OBSMPwrTaskQ"
  89. #define OBSM_COOLING_TASK_Q MSG_PIPES_PATH "OBSMCoolingTaskQ"
  90. #define OBSM_COOLING_TASK_RES_Q MSG_PIPES_PATH "OBSMCoolingTaskResQ"
  91. /*CMM OBSM TASK ID*/
  92. #define OBSM_COOLING_TASK_ID 14
  93. #define OBSM_TASK_ID 12
  94. #define OBSM_PWR_TASK_ID 13
  95. /**
  96. * Shared memory access key.
  97. **/
  98. #define BMC_SHARED_MEM 0x01
  99. #define NVR_SHARED_MEM 0x02
  100. #define SENSOR_SHARED_MEM 0x05
  101. /**
  102. * Semaphore access Key
  103. **/
  104. #define PET_ACK_MANAGER_SEM_KEY 0x01
  105. /**
  106. * @defgroup qs IPMI Message Queues
  107. * IPMI message queues constitute the communication model between
  108. * various tasks in the software.
  109. * @{
  110. **/
  111. #if SUPPORT_IPMB0_IFC == 1
  112. /**
  113. * @var _FAR_ HQueue_T hIPMBFaultRecov_Q
  114. * @brief IPMB Fault recovery queue.
  115. **/
  116. extern _FAR_ HQueue_T hIPMBFaultRecov_Q;
  117. #endif
  118. extern int gthreadIndex;
  119. extern pthread_t gthreadIDs[256];
  120. extern int BMCInstCount;
  121. #define THREAD_TIMER_INTERVAL 10
  122. #define THREAD_STATE_MONITOR_NO 0
  123. #define THREAD_STATE_MONITOR_YES 1
  124. #define THREAD_ID_FOUND 1
  125. #define THREAD_ID_NOT_FOUND 0
  126. typedef struct
  127. {
  128. char monitor; /* Flag to indicate whether monitoring is needed or not */
  129. int time; /* No. of seconds that have elapsed since the start of the monitoring */
  130. char validThreadID; /* Flag to check whether the thread is found/valid or not */
  131. }ThreadMonitor;
  132. extern ThreadMonitor gthread_monitor_health[50];
  133. extern pthread_mutex_t ThreadMonitorMutex;
  134. extern void *oemTimerTask(void *pArg);
  135. extern void *oemDestroySSDTask(void *pArg);
  136. /**
  137. * @brief MsgHndlr Task when used as a thread.
  138. **/
  139. //extern void *MsgHndlr (void *pArg);
  140. extern void *FlushIPMIToIni(void *pArg);
  141. /**
  142. * @brief Chassis control Task when used as a thread.
  143. **/
  144. extern void* ChassisTask (void *pArg);
  145. /**
  146. * @brief Chassi Timer Task when used as a thread.
  147. **/
  148. extern void* ChassisTimer (void *pArg);
  149. /**
  150. * @brief IPMBIfc Task when used as a thread.
  151. **/
  152. extern void *IPMBIfcTask (void *Addr);
  153. /**
  154. * @brief KCSIfc Task when used as a thread.
  155. **/
  156. extern void *KCSIfcTask (void *Addr);
  157. /**
  158. * @brief LANIfc Task when used as a thread.
  159. **/
  160. extern void *LANIfcTask (void *Addr);
  161. /**
  162. * @brief SOLIfc Task when used as a thread.
  163. **/
  164. extern void *SOLIfcTask (void *Addr);
  165. /**
  166. * @brief USBIfc Task when used as a thread.
  167. **/
  168. extern void *USBIfcTask (void *Addr);
  169. /**
  170. * @brief SerialIfc Task when used as a thread.
  171. **/
  172. extern void *SerialIfcTask (void *Addr);
  173. /**
  174. * @brief Timer Task when used as a thread.
  175. **/
  176. extern void *TimerTask (void *pArg);
  177. /**
  178. * @brief Host Reset Function when used as a thread.
  179. **/
  180. extern void *Host_Reset_function(void *pArg);
  181. #pragma pack( )
  182. /** @} */
  183. #endif /* IPMI_MAIN_H */