DataHub.h revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
/** @file
This code supports a the private implementation
of the Data Hub protocol
Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
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
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _DATA_HUB_H_
#define _DATA_HUB_H_
#include <FrameworkDxe.h>
#include <Library/DebugLib.h>
#include <Library/UefiDriverEntryPoint.h>
#include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
typedef struct {
//
// Produced protocol(s)
//
//
// Private Data
//
//
// Updates to GlobalMonotonicCount, LogListHead, and FilterDriverListHead
// must be locked.
//
//
// Runing Monotonic Count to use for each error record.
// Increment AFTER use in an error record.
//
//
// List of EFI_DATA_ENTRY structures. This is the data log! The list
// must be in assending order of LogMonotonicCount.
//
//
// List of EFI_DATA_HUB_FILTER_DRIVER structures. Represents all
// the registered filter drivers.
//
#define DATA_HUB_INSTANCE_FROM_THIS(this) CR (this, DATA_HUB_INSTANCE, DataHub, DATA_HUB_INSTANCE_SIGNATURE)
//
// Private data structure to contain the data log. One record per
// structure. Head pointer to the list is the Log member of
// EFI_DATA_ENTRY. Record is a copy of the data passed in.
//
typedef struct {
//
// Private data to contain the filter driver Event and it's
// associated EFI_TPL.
//
typedef struct {
//
// Store Filter Driver Event and Tpl level it can be Signaled at.
//
//
// Monotonic count on the get next operation for Event.
// Zero indicates get next has not been called for this event yet.
//
//
// Filter driver will register what class filter should be used.
//
//
// Filter driver will register what record guid filter should be used.
//
#define FILTER_ENTRY_FROM_LINK(link) CR (link, DATA_HUB_FILTER_DRIVER, Link, EFI_DATA_HUB_FILTER_DRIVER_SIGNATURE)
#endif