+++ /dev/null
-/** @file\r
- The data hub protocol is used both by agents wishing to log\r
- data and those wishing to be made aware of all information that\r
- has been logged.\r
-\r
- For more information please look at Intel Platform Innovation \r
- Framework for EFI Data Hub Specification.\r
-\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: DataHub.h\r
-\r
- @par Revision Reference:\r
- This protocol is defined in Framework for EFI Data Hub Specification.\r
- Version 0.9.\r
-\r
-**/\r
-\r
-#ifndef __DATA_HUB_H__\r
-#define __DATA_HUB_H__\r
-\r
-#define EFI_DATA_HUB_PROTOCOL_GUID \\r
- { \\r
- 0xae80d021, 0x618e, 0x11d4, {0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } \\r
- }\r
-\r
-//\r
-// EFI generic Data Hub Header\r
-//\r
-// A Data Record is an EFI_DATA_RECORD_HEADER followed by RecordSize bytes of\r
-// data. The format of the data is defined by the DataRecordGuid.\r
-//\r
-// If EFI_DATA_RECORD_HEADER is extended in the future the Version number must\r
-// change and the HeaderSize will change if the definition of\r
-// EFI_DATA_RECORD_HEADER is extended.\r
-//\r
-// The logger is responcible for initializing:\r
-// Version, HeaderSize, RecordSize, DataRecordGuid, DataRecordClass\r
-//\r
-// The Data Hub driver is responcible for initializing:\r
-// LogTime and LogMonotonicCount.\r
-//\r
-#define EFI_DATA_RECORD_HEADER_VERSION 0x0100\r
-typedef struct {\r
- UINT16 Version;\r
- UINT16 HeaderSize;\r
- UINT32 RecordSize;\r
- EFI_GUID DataRecordGuid;\r
- EFI_GUID ProducerName;\r
- UINT64 DataRecordClass;\r
- EFI_TIME LogTime;\r
- UINT64 LogMonotonicCount;\r
-} EFI_DATA_RECORD_HEADER;\r
-\r
-//\r
-// Definition of DataRecordClass. These are used to filter out class types\r
-// at a very high level. The DataRecordGuid still defines the format of\r
-// the data. See DateHub.doc for rules on what can and can not be a\r
-// new DataRecordClass\r
-//\r
-#define EFI_DATA_RECORD_CLASS_DEBUG 0x0000000000000001\r
-#define EFI_DATA_RECORD_CLASS_ERROR 0x0000000000000002\r
-#define EFI_DATA_RECORD_CLASS_DATA 0x0000000000000004\r
-#define EFI_DATA_RECORD_CLASS_PROGRESS_CODE 0x0000000000000008\r
-\r
-//\r
-// Forward reference for pure ANSI compatability\r
-//\r
-typedef struct _EFI_DATA_HUB_PROTOCOL EFI_DATA_HUB_PROTOCOL;\r
-\r
-/**\r
- Logs a data record to the system event log.\r
-\r
- @param This The EFI_DATA_HUB_PROTOCOL instance.\r
- @param description\r
- @param DataRecordGuid A GUID that indicates the format of the data passed into RawData.\r
- @param ProducerName A GUID that indicates the identity of the caller to this API.\r
- @param DataRecordClass This class indicates the generic type of the data record.\r
- @param RawData The DataRecordGuid-defined data to be logged.\r
- @param RawDataSize The size in bytes of RawData.\r
-\r
- @retval EFI_SUCCESS Data was logged.\r
- @retval EFI_OUT_OF_RESOURCES Data was not logged due to lack of system resources.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_LOG_DATA) (\r
- IN EFI_DATA_HUB_PROTOCOL *This,\r
- IN EFI_GUID *DataRecordGuid,\r
- IN EFI_GUID *ProducerName,\r
- IN UINT64 DataRecordClass,\r
- IN VOID *RawData,\r
- IN UINT32 RawDataSize\r
- );\r
-\r
-/**\r
- Allows the system data log to be searched.\r
-\r
- @param This The EFI_DATA_HUB_PROTOCOL instance.\r
- @param MonotonicCount On input, it specifies the Record to return.\r
- An input of zero means to return the first record.\r
- @param FilterDriver If FilterDriver is not passed in a MonotonicCount of zero,\r
- it means to return the first data record. If FilterDriver is passed in,\r
- then a MonotonicCount of zero means to return the first data not yet read\r
- by FilterDriver.\r
- @param Record Returns a dynamically allocated memory buffer with a data\r
- record that matches MonotonicCount.\r
-\r
- @retval EFI_SUCCESS Data was returned in Record.\r
- @retval EFI_INVALID_PARAMETER FilterDriver was passed in but does not exist.\r
- @retval EFI_NOT_FOUND MonotonicCount does not match any data record\r
- in the system. If a MonotonicCount of zero was passed in, then no\r
- data records exist in the system.\r
- @retval EFI_OUT_OF_RESOURCES Record was not returned due to lack\r
- of system resources.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_GET_NEXT_RECORD) (\r
- IN EFI_DATA_HUB_PROTOCOL *This,\r
- IN OUT UINT64 *MonotonicCount,\r
- IN EFI_EVENT *FilterDriver OPTIONAL,\r
- OUT EFI_DATA_RECORD_HEADER **Record\r
- );\r
-\r
-/**\r
- Registers an event to be signaled every time a data record is logged in the system.\r
-\r
- @param This The EFI_DATA_HUB_PROTOCOL instance.\r
- @param FilterEvent The EFI_EVENT to signal whenever data that matches\r
- FilterClass is logged in the system.\r
- @param FilterTpl The maximum EFI_TPL at which FilterEvent can be signaled.\r
- It is strongly recommended that you use the lowest EFI_TPL possible.\r
- @param FilterClass FilterEvent will be signaled whenever a bit\r
- in EFI_DATA_RECORD_HEADER.DataRecordClass is also set in FilterClass.\r
- If FilterClass is zero, no class-based filtering will be performed.\r
- @param FilterDataRecordGuid FilterEvent will be signaled whenever\r
- FilterDataRecordGuid matches EFI_DATA_RECORD_HEADER.DataRecordGuid.\r
- If FilterDataRecordGuid is NULL, then no GUID-based filtering will be performed.\r
-\r
- @retval EFI_SUCCESS The filter driver event was registered\r
- @retval EFI_ALREADY_STARTED FilterEvent was previously registered and cannot be registered again.\r
- @retval EFI_OUT_OF_RESOURCES The filter driver event was not registered\r
- due to lack of system resources.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_REGISTER_FILTER_DRIVER) (\r
- IN EFI_DATA_HUB_PROTOCOL *This,\r
- IN EFI_EVENT FilterEvent,\r
- IN EFI_TPL FilterTpl,\r
- IN UINT64 FilterClass,\r
- IN EFI_GUID *FilterDataRecordGuid OPTIONAL\r
- );\r
-\r
-/**\r
- Stops a filter driver from being notified when data records are logged.\r
-\r
- @param This The EFI_DATA_HUB_PROTOCOL instance.\r
- @param FilterEvent The EFI_EVENT to remove from the list of events to be\r
- signaled every time errors are logged.\r
-\r
- @retval EFI_SUCCESS The filter driver represented by FilterEvent was shut off.\r
- @retval EFI_NOT_FOUND FilterEvent did not exist.\r
-\r
-**/\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER) (\r
- IN EFI_DATA_HUB_PROTOCOL *This,\r
- IN EFI_EVENT FilterEvent\r
- );\r
-\r
-/**\r
- @par Protocol Description:\r
- This protocol is used to log information and register filter drivers \r
- to receive data records.\r
-\r
- @param LogData\r
- Logs a data record. \r
-\r
- @param GetNextDataRecord\r
- Gets a data record. Used both to view the memory-based log and to \r
- get information about which data records have been consumed by a filter driver.\r
-\r
- @param RegisterFilterDriver\r
- Allows the registration of an EFI event to act as a filter driver for all data records that are logged. \r
-\r
- @param UnregisterFilterDriver\r
- Used to remove a filter driver that was added with RegisterFilterDriver(). \r
-\r
-**/\r
-struct _EFI_DATA_HUB_PROTOCOL {\r
- EFI_DATA_HUB_LOG_DATA LogData;\r
- EFI_DATA_HUB_GET_NEXT_RECORD GetNextRecord;\r
- EFI_DATA_HUB_REGISTER_FILTER_DRIVER RegisterFilterDriver;\r
- EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER UnregisterFilterDriver;\r
-};\r
-\r
-extern EFI_GUID gEfiDataHubProtocolGuid;\r
-\r
-#endif\r