Check in DxeCore for Nt32 platform. Currently, it does not follow PI/UEFI2.1.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3045 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
337
MdeModulePkg/Core/Dxe/hand.h
Normal file
337
MdeModulePkg/Core/Dxe/hand.h
Normal file
@ -0,0 +1,337 @@
|
||||
/*++
|
||||
|
||||
Copyright (c) 2006, 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:
|
||||
|
||||
hand.h
|
||||
|
||||
Abstract:
|
||||
|
||||
EFI internal protocol definitions
|
||||
|
||||
|
||||
|
||||
Revision History
|
||||
|
||||
--*/
|
||||
|
||||
#ifndef _HAND_H_
|
||||
#define _HAND_H_
|
||||
|
||||
|
||||
//
|
||||
// IHANDLE - contains a list of protocol handles
|
||||
//
|
||||
|
||||
#define EFI_HANDLE_SIGNATURE EFI_SIGNATURE_32('h','n','d','l')
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
LIST_ENTRY AllHandles; // All handles list of IHANDLE
|
||||
LIST_ENTRY Protocols; // List of PROTOCOL_INTERFACE's for this handle
|
||||
UINTN LocateRequest; //
|
||||
UINT64 Key; // The Handle Database Key value when this handle was last created or modified
|
||||
} IHANDLE;
|
||||
|
||||
#define ASSERT_IS_HANDLE(a) ASSERT((a)->Signature == EFI_HANDLE_SIGNATURE)
|
||||
|
||||
|
||||
//
|
||||
// PROTOCOL_ENTRY - each different protocol has 1 entry in the protocol
|
||||
// database. Each handler that supports this protocol is listed, along
|
||||
// with a list of registered notifies.
|
||||
//
|
||||
|
||||
#define PROTOCOL_ENTRY_SIGNATURE EFI_SIGNATURE_32('p','r','t','e')
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
LIST_ENTRY AllEntries; // All entries
|
||||
EFI_GUID ProtocolID; // ID of the protocol
|
||||
LIST_ENTRY Protocols; // All protocol interfaces
|
||||
LIST_ENTRY Notify; // Registerd notification handlers
|
||||
} PROTOCOL_ENTRY;
|
||||
|
||||
//
|
||||
// PROTOCOL_INTERFACE - each protocol installed on a handle is tracked
|
||||
// with a protocol interface structure
|
||||
//
|
||||
|
||||
#define PROTOCOL_INTERFACE_SIGNATURE EFI_SIGNATURE_32('p','i','f','c')
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
EFI_HANDLE Handle; // Back pointer
|
||||
LIST_ENTRY Link; // Link on IHANDLE.Protocols
|
||||
LIST_ENTRY ByProtocol; // Link on PROTOCOL_ENTRY.Protocols
|
||||
PROTOCOL_ENTRY *Protocol; // The protocol ID
|
||||
VOID *Interface; // The interface value
|
||||
|
||||
LIST_ENTRY OpenList; // OPEN_PROTOCOL_DATA list.
|
||||
UINTN OpenListCount;
|
||||
|
||||
EFI_HANDLE ControllerHandle;
|
||||
|
||||
} PROTOCOL_INTERFACE;
|
||||
|
||||
#define OPEN_PROTOCOL_DATA_SIGNATURE EFI_SIGNATURE_32('p','o','d','l')
|
||||
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
LIST_ENTRY Link;
|
||||
|
||||
EFI_HANDLE AgentHandle;
|
||||
EFI_HANDLE ControllerHandle;
|
||||
UINT32 Attributes;
|
||||
UINT32 OpenCount;
|
||||
} OPEN_PROTOCOL_DATA;
|
||||
|
||||
|
||||
//
|
||||
// PROTOCOL_NOTIFY - used for each register notification for a protocol
|
||||
//
|
||||
|
||||
#define PROTOCOL_NOTIFY_SIGNATURE EFI_SIGNATURE_32('p','r','t','n')
|
||||
typedef struct {
|
||||
UINTN Signature;
|
||||
PROTOCOL_ENTRY *Protocol;
|
||||
LIST_ENTRY Link; // All notifications for this protocol
|
||||
EFI_EVENT Event; // Event to notify
|
||||
LIST_ENTRY *Position; // Last position notified
|
||||
} PROTOCOL_NOTIFY;
|
||||
|
||||
//
|
||||
// Internal prototypes
|
||||
//
|
||||
|
||||
|
||||
PROTOCOL_ENTRY *
|
||||
CoreFindProtocolEntry (
|
||||
IN EFI_GUID *Protocol,
|
||||
IN BOOLEAN Create
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Finds the protocol entry for the requested protocol.
|
||||
|
||||
The gProtocolDatabaseLock must be owned
|
||||
|
||||
Arguments:
|
||||
|
||||
Protocol - The ID of the protocol
|
||||
|
||||
Create - Create a new entry if not found
|
||||
|
||||
Returns:
|
||||
|
||||
Protocol entry
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
CoreNotifyProtocolEntry (
|
||||
IN PROTOCOL_ENTRY *ProtEntry
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Signal event for every protocol in protocol entry.
|
||||
|
||||
Arguments:
|
||||
|
||||
ProtEntry - Protocol entry
|
||||
|
||||
Returns:
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
PROTOCOL_INTERFACE *
|
||||
CoreFindProtocolInterface (
|
||||
IN IHANDLE *Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Interface
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Finds the protocol instance for the requested handle and protocol.
|
||||
|
||||
Note: This function doesn't do parameters checking, it's caller's responsibility
|
||||
to pass in valid parameters.
|
||||
|
||||
Arguments:
|
||||
|
||||
Handle - The handle to search the protocol on
|
||||
|
||||
Protocol - GUID of the protocol
|
||||
|
||||
Interface - The interface for the protocol being searched
|
||||
|
||||
Returns:
|
||||
|
||||
Protocol instance (NULL: Not found)
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
PROTOCOL_INTERFACE *
|
||||
CoreRemoveInterfaceFromProtocol (
|
||||
IN IHANDLE *Handle,
|
||||
IN EFI_GUID *Protocol,
|
||||
IN VOID *Interface
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Removes Protocol from the protocol list (but not the handle list).
|
||||
|
||||
Arguments:
|
||||
|
||||
Handle - The handle to remove protocol on.
|
||||
|
||||
Protocol - GUID of the protocol to be moved
|
||||
|
||||
Interface - The interface of the protocol
|
||||
|
||||
Returns:
|
||||
|
||||
Protocol Entry
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
CoreUnregisterProtocolNotify (
|
||||
IN EFI_EVENT Event
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Removes all the events in the protocol database that match Event.
|
||||
|
||||
Arguments:
|
||||
|
||||
Event - The event to search for in the protocol database.
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS when done searching the entire database.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
CoreDisconnectControllersUsingProtocolInterface (
|
||||
IN EFI_HANDLE UserHandle,
|
||||
IN PROTOCOL_INTERFACE *Prot
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Attempts to disconnect all drivers that are using the protocol interface being queried.
|
||||
If failed, reconnect all drivers disconnected.
|
||||
|
||||
Note: This function doesn't do parameters checking, it's caller's responsibility
|
||||
to pass in valid parameters.
|
||||
|
||||
Arguments:
|
||||
|
||||
UserHandle - The handle on which the protocol is installed
|
||||
Prot - The protocol to disconnect drivers from
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_SUCCESS - Drivers using the protocol interface are all disconnected
|
||||
EFI_ACCESS_DENIED - Failed to disconnect one or all of the drivers
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
CoreAcquireProtocolLock (
|
||||
VOID
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Acquire lock on gProtocolDatabaseLock.
|
||||
|
||||
Arguments:
|
||||
|
||||
None
|
||||
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
VOID
|
||||
CoreReleaseProtocolLock (
|
||||
VOID
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Release lock on gProtocolDatabaseLock.
|
||||
|
||||
Arguments:
|
||||
|
||||
None
|
||||
|
||||
Returns:
|
||||
|
||||
None
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
EFI_STATUS
|
||||
CoreValidateHandle (
|
||||
IN EFI_HANDLE UserHandle
|
||||
)
|
||||
/*++
|
||||
|
||||
Routine Description:
|
||||
|
||||
Check whether a handle is a valid EFI_HANDLE
|
||||
|
||||
Arguments:
|
||||
|
||||
UserHandle - The handle to check
|
||||
|
||||
Returns:
|
||||
|
||||
EFI_INVALID_PARAMETER - The handle is NULL or not a valid EFI_HANDLE.
|
||||
|
||||
EFI_SUCCESS - The handle is valid EFI_HANDLE.
|
||||
|
||||
--*/
|
||||
;
|
||||
|
||||
//
|
||||
// Externs
|
||||
//
|
||||
|
||||
extern EFI_LOCK gProtocolDatabaseLock;
|
||||
extern LIST_ENTRY gHandleList;
|
||||
extern UINT64 gHandleDatabaseKey;
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user