SELRecord.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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 SELRepository_T
  52. * @brief SEL Repository structure.
  53. **/
  54. typedef struct
  55. {
  56. uint8_t Signature [SIGN_SIZE]; /* $SDR */
  57. uint16_t NumRecords;
  58. uint16_t Padding;
  59. uint32_t AddTimeStamp;
  60. uint32_t EraseTimeStamp;
  61. uint16_t FirstRecID;
  62. uint16_t LastRecID;
  63. uint16_t SELIndex;
  64. SELRec_T *SELRecord;
  65. } SELRepository_T;
  66. /* * @struct SELRecIDNode
  67. * @brief SELRecIDNode structure.
  68. **/
  69. typedef struct SELRecIDNode
  70. {
  71. int16_t RecordID;
  72. struct SELRecIDNode *NextRecID;
  73. }SELRecIDNode;
  74. /**
  75. * @struct SELEventNode
  76. * @brief SELEventNode structure.
  77. **/
  78. typedef struct SELEventNode
  79. {
  80. int32_t FileIndex;
  81. SELRec_T SELRecord;
  82. struct SELEventNode *NextRec;
  83. struct SELEventNode *PrevRec;
  84. }SELEventNode;
  85. typedef struct
  86. {
  87. int32_t RecPos;
  88. struct SELEventNode *RecAddr;
  89. }SELRecAddr;
  90. /**
  91. * @struct SELReclaimInfo_T
  92. * @brief SELReclaimInfo_T structure.
  93. **/
  94. typedef struct
  95. {
  96. int8_t Signature[SIGN_SIZE];
  97. int16_t NumRecords;
  98. int32_t AddTimeStamp;
  99. int32_t EraseTimeStamp;
  100. int32_t LastFileIndex;
  101. int32_t MaxRecPos;
  102. } SELReclaimInfo_T;
  103. /**
  104. * @struct SELReclaimRepository_T
  105. * @brief SELReclaimRepository_T structure.
  106. **/
  107. typedef struct
  108. {
  109. /* The Node Pointer needs to be maintained
  110. * at the top in order to avoid structure
  111. * alignment issues */
  112. SELEventNode *HeadeNode;
  113. SELEventNode *TailNode;
  114. SELRecIDNode *HeadeRecNode;
  115. SELRecIDNode *TailRecNode;
  116. SELRecAddr *pSELRecAddr;
  117. SELReclaimInfo_T *pSELReclaimInfo;
  118. } SELReclaimRepository_T;
  119. ///* SEL Reclaim Function Prototypes */
  120. //extern int DeleteSELRecordIDHeadNode(SELRecIDNode **HeadNode,SELRecIDNode **TailNode);
  121. //extern int DeleteSELReclaimNode(SELEventNode **HeadNode,SELEventNode **TailNode,int16_t RecordID,unsigned int *FileIndex);
  122. //extern int AddSELRecalimNode(SELEventNode **HeadNode,SELEventNode **TailNode,SELRec_T *SELRecord,unsigned int FileIndex);
  123. //extern int16_t GetNextReclaimRecordID(void);
  124. //extern int FlushAddReclaimSEL(SELRec_T *SELRecord);
  125. //extern int ReFlushDeleteReclaimSEL(int16_t RecordID);
  126. //extern int AddSELRecordIDNode(SELRecIDNode **HeadNode,SELRecIDNode **TailNode,int16_t RecordID);
  127. //extern int32_t GetReclaimFileSize(char *FileName);
  128. //extern void DeleteReclaimAllSELNode(SELEventNode **HeadNode,SELEventNode **TailNode);
  129. //extern int UpdateRecordIDList(int8_t *RecordID);
  130. //extern int CopySELReclaimEntries(SELEventNode **HeadNode,int8_t *RecordData,int32_t NumEntriesRetrd,int32_t NumOfEntries);
  131. //extern int LoadSELReclaimInfo( SELReclaimInfo_T *SELInfo);
  132. //extern int SaveSELReclaimInfo( SELReclaimInfo_T *SELInfo);
  133. //extern int CheckPreviousReclaimFile(int32_t FileIndex,int32_t FileSize,SELRec_T *pSELReclaimRec,int8_t *SELCount,char *PrevFileName);
  134. //extern int FilterSELReclaimFiles(const struct dirent *entry);
  135. #pragma pack( )
  136. #endif /* SEL_RECORD_H */