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