SELRecord.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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. *
  16. * SELRecord.h
  17. * SEL record structures.
  18. *
  19. * Author: Rama Rao Bisa<ramab@ami.com>
  20. *
  21. ******************************************************************/
  22. #ifndef SEL_RECORD_H
  23. #define SEL_RECORD_H
  24. #include "com_IPMI_SEL.h"
  25. /*** External Definitions ***/
  26. #define VALID_RECORD 0x5A
  27. #define MAX_RECORD_ID (65535)
  28. //#define SEL_RECLAIM_HEAD_NODE(BMCInst) g_BMCInfo[BMCInst].SELReclaimRepos.HeadeNode
  29. //#define SEL_RECLAIM_TAIL_NODE(BMCInst) g_BMCInfo[BMCInst].SELReclaimRepos.TailNode
  30. //#define SEL_RECLAIM_RECORD_HEAD_NODE(BMCInst) g_BMCInfo[BMCInst].SELReclaimRepos.HeadeRecNode
  31. //#define SEL_RECLAIM_RECORD_TAIL_NODE(BMCInst) g_BMCInfo[BMCInst].SELReclaimRepos.TailRecNode
  32. //#define SEL_RECORD_ADDR(BMCInst,Var) g_BMCInfo[BMCInst].SELReclaimRepos.pSELRecAddr[Var]
  33. //#define SEL_PREV_RECORD_ADDR(BMCInst,Var) g_BMCInfo[BMCInst].SELReclaimRepos.pSELRecAddr[Var].RecAddr->PrevRec
  34. //#define SEL_NEXT_RECORD_ADDR(BMCInst,Var) g_BMCInfo[BMCInst].SELReclaimRepos.pSELRecAddr[Var].RecAddr->NextRec
  35. //#define SEL_MALLOC(Var) (struct Var *)malloc(sizeof(Var))
  36. #define SIGN_SIZE 4
  37. //#define SEL_RECLAIM_SECTION_INFO "SELRECLAIMINFO"
  38. //#define SEL_SIGNATURE "signature"
  39. //#define SEL_NUMRECORDS "NumRecords"
  40. //#define SEL_ADDTIMESTAMP "AddTimeStamp"
  41. //#define SEL_ERASETIMESTAMP "EraseTimeStamp"
  42. //#define SEL_LASTFILEINDEX "LastFileIndex"
  43. //#define SEL_MAXRECPOS "MaxRecPos"
  44. //#define SEL_FREE(Var) \
  45. //do{ \
  46. // free(Var); \
  47. // Var=NULL; \
  48. //}while(0);
  49. #pragma pack( 1 )
  50. /**
  51. * @struct SELRec_T
  52. * @brief SEL Record
  53. **/
  54. typedef struct
  55. {
  56. uint8_t Valid;
  57. uint8_t Len;
  58. SELEventRecord_T EvtRecord;
  59. } SELRec_T;
  60. /**
  61. * @struct SELRepository_T
  62. * @brief SEL Repository structure.
  63. **/
  64. typedef struct
  65. {
  66. uint8_t Signature [SIGN_SIZE]; /* $SDR */
  67. uint16_t NumRecords;
  68. uint16_t Padding;
  69. uint32_t AddTimeStamp;
  70. uint32_t EraseTimeStamp;
  71. uint16_t FirstRecID;
  72. uint16_t LastRecID;
  73. uint16_t SELIndex;
  74. SELRec_T *SELRecord;
  75. } SELRepository_T;
  76. /* * @struct SELRecIDNode
  77. * @brief SELRecIDNode structure.
  78. **/
  79. typedef struct SELRecIDNode
  80. {
  81. int16_t RecordID;
  82. struct SELRecIDNode *NextRecID;
  83. }SELRecIDNode;
  84. /**
  85. * @struct SELEventNode
  86. * @brief SELEventNode structure.
  87. **/
  88. typedef struct SELEventNode
  89. {
  90. int32_t FileIndex;
  91. SELRec_T SELRecord;
  92. struct SELEventNode *NextRec;
  93. struct SELEventNode *PrevRec;
  94. }SELEventNode;
  95. typedef struct
  96. {
  97. int32_t RecPos;
  98. struct SELEventNode *RecAddr;
  99. }SELRecAddr;
  100. /**
  101. * @struct SELReclaimInfo_T
  102. * @brief SELReclaimInfo_T structure.
  103. **/
  104. typedef struct
  105. {
  106. int8_t Signature[SIGN_SIZE];
  107. int16_t NumRecords;
  108. int32_t AddTimeStamp;
  109. int32_t EraseTimeStamp;
  110. int32_t LastFileIndex;
  111. int32_t MaxRecPos;
  112. } SELReclaimInfo_T;
  113. /**
  114. * @struct SELReclaimRepository_T
  115. * @brief SELReclaimRepository_T structure.
  116. **/
  117. typedef struct
  118. {
  119. /* The Node Pointer needs to be maintained
  120. * at the top in order to avoid structure
  121. * alignment issues */
  122. SELEventNode *HeadeNode;
  123. SELEventNode *TailNode;
  124. SELRecIDNode *HeadeRecNode;
  125. SELRecIDNode *TailRecNode;
  126. SELRecAddr *pSELRecAddr;
  127. SELReclaimInfo_T *pSELReclaimInfo;
  128. } SELReclaimRepository_T;
  129. ///* SEL Reclaim Function Prototypes */
  130. //extern int DeleteSELRecordIDHeadNode(SELRecIDNode **HeadNode,SELRecIDNode **TailNode);
  131. //extern int DeleteSELReclaimNode(SELEventNode **HeadNode,SELEventNode **TailNode,int16_t RecordID,unsigned int *FileIndex);
  132. //extern int AddSELRecalimNode(SELEventNode **HeadNode,SELEventNode **TailNode,SELRec_T *SELRecord,unsigned int FileIndex);
  133. //extern int16_t GetNextReclaimRecordID(void);
  134. //extern int FlushAddReclaimSEL(SELRec_T *SELRecord);
  135. //extern int ReFlushDeleteReclaimSEL(int16_t RecordID);
  136. //extern int AddSELRecordIDNode(SELRecIDNode **HeadNode,SELRecIDNode **TailNode,int16_t RecordID);
  137. //extern int32_t GetReclaimFileSize(char *FileName);
  138. //extern void DeleteReclaimAllSELNode(SELEventNode **HeadNode,SELEventNode **TailNode);
  139. //extern int UpdateRecordIDList(int8_t *RecordID);
  140. //extern int CopySELReclaimEntries(SELEventNode **HeadNode,int8_t *RecordData,int32_t NumEntriesRetrd,int32_t NumOfEntries);
  141. //extern int LoadSELReclaimInfo( SELReclaimInfo_T *SELInfo);
  142. //extern int SaveSELReclaimInfo( SELReclaimInfo_T *SELInfo);
  143. //extern int CheckPreviousReclaimFile(int32_t FileIndex,int32_t FileSize,SELRec_T *pSELReclaimRec,int8_t *SELCount,char *PrevFileName);
  144. //extern int FilterSELReclaimFiles(const struct dirent *entry);
  145. #pragma pack( )
  146. #endif /* SEL_RECORD_H */