EDK2 doxygen online documents - Firmware Encoding Index 1
EDK2 doxygen online documents - Firmware Encoding Index

IntelFrameworkModulePkg/Universal/DataHubDxe/DataHub.h

Go to the documentation of this file.
00001 
00016 #ifndef _DATA_HUB_H_
00017 #define _DATA_HUB_H_
00018 
00019 
00020 #include <FrameworkDxe.h>
00021 
00022 #include <Protocol/DataHub.h>
00023 
00024 #include <Library/DebugLib.h>
00025 #include <Library/UefiDriverEntryPoint.h>
00026 #include <Library/UefiLib.h>
00027 #include <Library/BaseLib.h>
00028 #include <Library/BaseMemoryLib.h>
00029 #include <Library/MemoryAllocationLib.h>
00030 #include <Library/UefiBootServicesTableLib.h>
00031 #include <Library/UefiRuntimeServicesTableLib.h>
00032 
00033 #define DATA_HUB_INSTANCE_SIGNATURE SIGNATURE_32 ('D', 'H', 'u', 'b')
00034 typedef struct {
00035   UINT32                Signature;
00036 
00037   EFI_HANDLE            Handle;
00038 
00039   //
00040   // Produced protocol(s)
00041   //
00042   EFI_DATA_HUB_PROTOCOL DataHub;
00043 
00044   //
00045   // Private Data
00046   //
00047   //
00048   // Updates to GlobalMonotonicCount, LogListHead, and FilterDriverListHead
00049   //  must be locked.
00050   //
00051   EFI_LOCK              DataLock;
00052 
00053   //
00054   // Runing Monotonic Count to use for each error record.
00055   //  Increment AFTER use in an error record.
00056   //
00057   UINT64                GlobalMonotonicCount;
00058 
00059   //
00060   // List of EFI_DATA_ENTRY structures. This is the data log! The list
00061   //  must be in assending order of LogMonotonicCount.
00062   //
00063   LIST_ENTRY            DataListHead;
00064 
00065   //
00066   // List of EFI_DATA_HUB_FILTER_DRIVER structures. Represents all
00067   //  the registered filter drivers.
00068   //
00069   LIST_ENTRY            FilterDriverListHead;
00070 
00071 } DATA_HUB_INSTANCE;
00072 
00073 #define DATA_HUB_INSTANCE_FROM_THIS(this) CR (this, DATA_HUB_INSTANCE, DataHub, DATA_HUB_INSTANCE_SIGNATURE)
00074 
00075 //
00076 // Private data structure to contain the data log. One record per
00077 //  structure. Head pointer to the list is the Log member of
00078 //  EFI_DATA_ENTRY. Record is a copy of the data passed in.
00079 //
00080 #define EFI_DATA_ENTRY_SIGNATURE  SIGNATURE_32 ('D', 'r', 'e', 'c')
00081 typedef struct {
00082   UINT32                  Signature;
00083   LIST_ENTRY              Link;
00084 
00085   EFI_DATA_RECORD_HEADER  *Record;
00086 
00087   UINTN                   RecordSize;
00088 
00089 } EFI_DATA_ENTRY;
00090 
00091 #define DATA_ENTRY_FROM_LINK(link)  CR (link, EFI_DATA_ENTRY, Link, EFI_DATA_ENTRY_SIGNATURE)
00092 
00093 //
00094 // Private data to contain the filter driver Event and it's
00095 //  associated EFI_TPL.
00096 //
00097 #define EFI_DATA_HUB_FILTER_DRIVER_SIGNATURE  SIGNATURE_32 ('D', 'h', 'F', 'd')
00098 
00099 typedef struct {
00100   UINT32          Signature;
00101   LIST_ENTRY      Link;
00102 
00103   //
00104   // Store Filter Driver Event and Tpl level it can be Signaled at.
00105   //
00106   EFI_EVENT       Event;
00107   EFI_TPL         Tpl;
00108 
00109   //
00110   // Monotonic count on the get next operation for Event.
00111   //  Zero indicates get next has not been called for this event yet.
00112   //
00113   UINT64          GetNextMonotonicCount;
00114 
00115   //
00116   // Filter driver will register what class filter should be used.
00117   //
00118   UINT64          ClassFilter;
00119 
00120   //
00121   // Filter driver will register what record guid filter should be used.
00122   //
00123   EFI_GUID        FilterDataRecordGuid;
00124 
00125 } DATA_HUB_FILTER_DRIVER;
00126 
00127 #define FILTER_ENTRY_FROM_LINK(link)  CR (link, DATA_HUB_FILTER_DRIVER, Link, EFI_DATA_HUB_FILTER_DRIVER_SIGNATURE)
00128 
00129 #endif
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Defines