SharedMem.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  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. * SharedMem.h
  16. * Memory shared by different tasks
  17. *
  18. * Author: Govind Kothandapani <govindk@ami.com>
  19. * : Rama Bisa <ramab@ami.com>
  20. * : Basavaraj Astekar <basavaraja@ami.com>
  21. * : Bakka Ravinder Reddy <bakkar@ami.com>
  22. *
  23. *****************************************************************/
  24. #ifndef SHARED_MEM_H
  25. #define SHARED_MEM_H
  26. #include "Types.h"
  27. //#include "OSPort.h"
  28. #include "MsgHndlr.h"
  29. #include "IPMI_Main.h"
  30. #include "PMConfig.h"
  31. #include "Session.h"
  32. #include "BridgeMgmt.h"
  33. #include "BridgeEvt.h"
  34. #include "SerialModem.h"
  35. //#include "PDKHooks.h"
  36. #include "Terminal.h"
  37. #include "PEFTmr.h"
  38. #include "IPMI_LANConfig.h"
  39. #include "NVRAccess.h"
  40. #include "Indicators.h"
  41. #include "Debug.h"
  42. #include "ChassisDevice.h"
  43. //#include "IPMI_LANConfig.h"
  44. #include "IPMI_ChassisDevice.h"
  45. //#include "internal_sensor.h"
  46. #include "SSIDefs.h"
  47. #include "OBSMMain.h" //CMM OBSM Header file
  48. //#include "IPMIConf.h"
  49. #include "bmc_type.h"
  50. #pragma pack( 1 )
  51. #define DISABLED_EVENT_RECEIVER 0xFF
  52. #define MAX_HOSTNAME_LEN 64
  53. #define MAX_DNS_IP_ADDRESS 0x03
  54. #define MAX_DOMAIN_BLOCK_SIZE 64
  55. #define MAX_BLOCK 0x04
  56. #define MAX_NUM_BMC 5
  57. typedef struct
  58. {
  59. INT8U HostSetting;
  60. INT8U HostNameLen;
  61. INT8U HostName[MAX_HOSTNAME_LEN];
  62. INT8U RegisterBMC[MAX_LAN_CHANNELS];
  63. INT8U DomainDHCP;
  64. INT8U DomainIndex;
  65. INT8U Domainpriority;
  66. INT8U DomainLen;
  67. INT8U DNSEnable;
  68. INT8U DNSDHCP;
  69. INT8U DNSIndex;
  70. INT8U DomainName[MAX_DOMAIN_BLOCK_SIZE * MAX_BLOCK];
  71. INT8U IPPriority;
  72. INT8U DNSIPAddr1[IP6_ADDR_LEN];
  73. INT8U DNSIPAddr2[IP6_ADDR_LEN];
  74. INT8U DNSIPAddr3[IP6_ADDR_LEN];
  75. }PACKED DNS_T;
  76. typedef struct
  77. {
  78. INT8U ImageName[MAX_DOMAIN_BLOCK_SIZE * MAX_BLOCK];
  79. INT8U ImageNameBit;
  80. INT8U UserName[MAX_DOMAIN_BLOCK_SIZE * MAX_BLOCK];
  81. INT8U UserNameBit;
  82. INT8U MountPath[MAX_DOMAIN_BLOCK_SIZE * MAX_BLOCK];
  83. INT8U MountPathBit;
  84. INT8U DomainName[MAX_DOMAIN_BLOCK_SIZE * MAX_BLOCK];
  85. INT8U DomainNameBit;
  86. }PACKED RIS_T;
  87. /**
  88. * @struct BMCSharedMem_T
  89. * @brief Structure of memory shared between different tasks.
  90. **/
  91. typedef struct
  92. {
  93. INT8U EvRcv_SlaveAddr; /**< Event receiver slave address. */
  94. INT8U EvRcv_LUN; /**< Event receiver LUN. */
  95. INT8U MsgFlags; /**< Message flags. */
  96. INT8U GlobalEnables; /**< Global enables. */
  97. AlertStringTbl_T AlertStringEntry; /**< Alert strings. */
  98. LANDestType_T VolLANDestType[MAX_LAN_CHANNELS]; /**< Volatile lan destination type. */
  99. LANDestAddr_T VolLANDest[MAX_LAN_CHANNELS]; /**< Volatile lan destination address.*/
  100. LANDestv6Addr_T VolLANv6Dest[MAX_LAN_CHANNELS]; /**< Volatile lan destination address.*/
  101. INT8U LANAlertStatus[MAX_LAN_CHANNELS]; /**< Lan alert stuatus. */
  102. //INT8U GratArpStatus; /**< Gratuitous arp status. */
  103. INT8U ArpSuspendStatus[MAX_LAN_CHANNELS];
  104. VLANDestTags_T VLANDestTag; /**< VLAN Destination tags. */
  105. INT8U SOLBitRate[MAX_LAN_CHANNELS]; /**< SOL bit rate. */
  106. SMConfig_T SMConfig; /**< Serial modem configuration. */
  107. INT8U SerialMuxSetting; /**< Serial mux setting. */
  108. BOOL SerialSessionActive; /**< Session active status. */
  109. BOOL SerialModemMode; /**< Modem mode. */
  110. TAPResCode_T TAPRes;
  111. BridgeMgmtSHM_T BridgeMgmt; /**< Bridge management information. */
  112. BridgeEvt_T BridgeEvt; /**< Bridge event. */
  113. HealthState_T HealthState;
  114. INT32U SOLSessID; /**< SOL session id. Mutex - SessionTblMutex */
  115. INT8U SessionHandle; /**< Session handle. */
  116. PETAckTimeOutMgr_T PETAckMgr [MAX_PET_ACK]; /**< PET Acknowledge Informations */
  117. DeferredAlert_T DeferredAlert [MAX_DEFERRED_ALERTS]; /**<Deferred Alert Information */
  118. HTaskID_T MsgHndlrID; /**< Message handler Task ID */
  119. MsgHndlrTbl_T* pMsgHndlrTbl; /**< Pointer to Message Handler Table*/
  120. INT8U MsgHndlrTblSize; /**< Message handler Table Size */
  121. INT8U NumRcvMsg[3]; /**< Number of message in RcvMsg_Q */
  122. INT8U NumEvtMsg; /**< Number of message in EvtMsg_Q */
  123. INT8U DeviceGUID [16]; /**< BMC GUID */
  124. INT8U SystemGUID [16]; /**< System GUID */
  125. IndicatorInfo_T LEDInfo[MAX_LED_NUM]; /**< LED Info **/
  126. IndicatorInfo_T BeepInfo; /**< Beep Info **/
  127. PDK_SharedMem_T PDKSharedMem; /**< PKD Shared memory */
  128. INT8U SerialMUXMode; /**< Current Mux setting specfic for OEM */
  129. OSName_T OperatingSystemName;
  130. INT8U m_Sys_SetInProgress;
  131. INT8U m_Lan_SetInProgress;
  132. INT8U m_Serial_SetInProgress;
  133. INT8U m_PEF_SetInProgress;
  134. INT8U m_SOL_SetInProgress;
  135. INT8U m_ACPISysPwrState; /**< ACPISys Power State */
  136. INT8U m_ACPIDevPwrState; /**< ACPIDev Power State */
  137. INT16U m_LastRecID; /**< Added to handle via SMM Channel. Mutex - SELMutex */
  138. INT16U m_FirstRecID; /* First SEL RecID.Mutex - SELMutex*/
  139. INT16U m_SELIndex; /*SEL Index value.Mutex - SELMutex*/
  140. /* Watch dog timer Info Since KCS -SMM and Msg Hndlr using WatchDog Timer Variables */
  141. INT8U IsWDTPresent ;
  142. INT8U IsWDTRunning ;
  143. /* System Event Sensor Number used for PEFAction Event logging in PEF task */
  144. INT8U SysEvent_SensorNo;
  145. BootOptions_T sBootOptions; /* semi-volatile Boot Options */
  146. INT8U IsValidBootflagSet;
  147. INT8U SysRestartCaused;
  148. INT8U u8MadeChange; /* indicate the restart reason changed */
  149. int gIPUDPRMCPStats; /* Valid RMCP Packets counter */
  150. INT8U InitSELDone;
  151. OpStateFruObj_T OpStateFruObj;
  152. INT8U IPMBActiveBus;
  153. BOOL AdminDisableIPMBPrimary;
  154. BOOL AdminDisableIPMBSecondary;
  155. BOOL PowerActionInProgress;
  156. INT16U AggregatedThermalState;
  157. INT16U AggregatedFaultState;
  158. INT8U SOLState;
  159. INT8U KVMState;
  160. INT8U CDMediaState;
  161. INT8U FDMediaState;
  162. INT8U HDMediaState;
  163. BOOL ServSessionTimerActive;
  164. INT8U ServSessionExpiryTime;
  165. /*OBSM Shared Memory */
  166. ChassisInfo_T ChassisInfo;
  167. ChassisInvRecInfo_T ChassisInvRecInfo;
  168. ChassisSlotInfo_T ChassisSlotInfo;
  169. DNS_T DNSconf;
  170. INT8U UDSSessionHandle;
  171. RIS_T RISconf;
  172. } PACKED BMCSharedMem_T;
  173. #pragma pack( )
  174. /**
  175. * @def BMC_CREATE_SHARED_MEM()
  176. * @brief Create shared memory.
  177. **/
  178. #define BMC_CREATE_SHARED_MEM() \
  179. (OS_CREATE_SHARED_MEM (SHMH_BMC, sizeof (BMCSharedMem_T)))
  180. /**
  181. * @def BMC_GET_SHARED_MEM()
  182. * @brief Get shared memory access.
  183. **/
  184. //#define BMC_GET_SHARED_MEM(BMCInst) ((_FAR_ BMCSharedMem_T*)&g_BMCInfo[BMCInst].BMCSharedMem)
  185. #define BMC_GET_SHARED_MEM(BMCInst) ((_FAR_ BMCSharedMem_T*)&g_BMCInfo.BMCSharedMem)
  186. /*Shared memory time out in seconds */
  187. #define SHARED_MEM_TIMEOUT 15
  188. #if 0
  189. /**
  190. * @var hSharedMemMutex
  191. * @brief Shared memory mutex.
  192. **/
  193. //extern _FAR_ Mutex_T* hSharedMemMutex;
  194. extern pthread_mutex_t g_hBMCSharedMemMutex;
  195. /**
  196. *@var g_hSensorSharedMemMutex
  197. *@brief Sensor Shared memory mutex
  198. **/
  199. extern pthread_mutex_t g_hSensorSharedMemMutex;
  200. /**
  201. *@var g_SELMutex
  202. *@brief SEL mutex
  203. **/
  204. extern pthread_mutex_t m_hSELMutex;
  205. /**
  206. *@var m_hSensorSharedMemMutex
  207. *@brief SEL mutex
  208. **/
  209. extern pthread_mutex_t m_hSensorSharedMemMutex;
  210. /**
  211. *@var hPEFSharedMemMutex
  212. *@brief SEL mutex
  213. **/
  214. extern pthread_mutex_t hPEFSharedMemMutex;
  215. /**
  216. *@var g_hSessionTblMutex
  217. *@brief Session Tbl mutex
  218. **/
  219. extern pthread_mutex_t g_hSessionTblMutex;
  220. #endif
  221. /**
  222. * @def LOCK_BMC_SHARED_MEM ()
  223. * @brief lock BMC shared memory
  224. **/
  225. //#define LOCK_BMC_SHARED_MEM() OS_ACQUIRE_MUTEX(hSharedMemMutex, SHARED_MEM_TIMEOUT)
  226. #define LOCK_BMC_SHARED_MEM(BMCInst) OS_THREAD_MUTEX_ACQUIRE(&g_BMCInfo[BMCInst].BMCSharedMemMutex, SHARED_MEM_TIMEOUT)
  227. /**
  228. * @def
  229. * UNLOCK_BMC_SHARED_MEM ()
  230. * @brief unlock BMC shared memory
  231. **/
  232. //#define UNLOCK_BMC_SHARED_MEM() OS_RELEASE_MUTEX(hSharedMemMutex)
  233. //#define UNLOCK_BMC_SHARED_MEM(BMCInst) OS_THREAD_MUTEX_RELEASE(&g_BMCInfo[BMCInst].BMCSharedMemMutex)
  234. #define UNLOCK_BMC_SHARED_MEM(BMCInst) OS_THREAD_MUTEX_RELEASE(&g_BMCInfo.BMCSharedMemMutex)
  235. /**
  236. * @def LOCK_BMC_SHARED_MEM () for PEF Task only
  237. * @brief lock BMC shared memory
  238. **/
  239. //#define LOCK_BMC_SHARED_MEM_FOR_PEF(BMCInst) OS_THREAD_MUTEX_ACQUIRE(&g_BMCInfo[BMCInst].PEFSharedMemMutex, SHARED_MEM_TIMEOUT)
  240. /**
  241. * @def UNLOCK_BMC_SHARED_MEM () for PEF Task only
  242. * @brief unlock BMC shared memory
  243. **/
  244. //#define UNLOCK_BMC_SHARED_MEM_FOR_PEF(BMCInst) OS_THREAD_MUTEX_RELEASE(&g_BMCInfo[BMCInst].PEFSharedMemMutex)
  245. /* The Numbers of Internal Sensor */
  246. #define INT_SENSOR_NUM 10
  247. /**
  248. * @brief Initialize Shared memory.
  249. * @return 0 if success, -1 if error.
  250. **/
  251. //extern int InitBMCSharedMem (int BMCInst);
  252. extern MsgHndlrTbl_T m_MsgHndlrTbl[15];
  253. extern GroupExtnMsgHndlrTbl_T m_GroupExtnMsgHndlrTbl [10];
  254. extern TimerTaskTbl_T m_TimerTaskTbl [20];
  255. extern INT8U ExtNetFnMap[MAX_NUM_BMC][MAX_NETFN];
  256. //extern InternalSensorTbl_T m_internal_sensor_tbl[INT_SENSOR_NUM];
  257. #endif /* SHARED_MEM_H */