#include "DxeMain.h"\r
#include "Handle.h"\r
\r
-\r
//\r
// Driver Support Functions\r
//\r
+\r
/**\r
Connects one or more drivers to a controller.\r
\r
IN BOOLEAN Recursive\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STATUS ReturnStatus;\r
- IHANDLE *Handle;\r
- PROTOCOL_INTERFACE *Prot;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *ProtLink;\r
- OPEN_PROTOCOL_DATA *OpenData;\r
- EFI_DEVICE_PATH_PROTOCOL *AlignedRemainingDevicePath;\r
- EFI_HANDLE *ChildHandleBuffer;\r
- UINTN ChildHandleCount;\r
- UINTN Index;\r
- UINTN HandleFilePathSize;\r
- UINTN RemainingDevicePathSize;\r
- EFI_DEVICE_PATH_PROTOCOL *HandleFilePath;\r
- EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
- EFI_DEVICE_PATH_PROTOCOL *TempFilePath;\r
+ EFI_STATUS Status;\r
+ EFI_STATUS ReturnStatus;\r
+ IHANDLE *Handle;\r
+ PROTOCOL_INTERFACE *Prot;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *ProtLink;\r
+ OPEN_PROTOCOL_DATA *OpenData;\r
+ EFI_DEVICE_PATH_PROTOCOL *AlignedRemainingDevicePath;\r
+ EFI_HANDLE *ChildHandleBuffer;\r
+ UINTN ChildHandleCount;\r
+ UINTN Index;\r
+ UINTN HandleFilePathSize;\r
+ UINTN RemainingDevicePathSize;\r
+ EFI_DEVICE_PATH_PROTOCOL *HandleFilePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *FilePath;\r
+ EFI_DEVICE_PATH_PROTOCOL *TempFilePath;\r
\r
//\r
// Make sure ControllerHandle is valid\r
ASSERT (HandleFilePath != NULL);\r
FilePath = HandleFilePath;\r
TempFilePath = NULL;\r
- if (RemainingDevicePath != NULL && !Recursive) {\r
+ if ((RemainingDevicePath != NULL) && !Recursive) {\r
HandleFilePathSize = GetDevicePathSize (HandleFilePath) - sizeof (EFI_DEVICE_PATH_PROTOCOL);\r
RemainingDevicePathSize = GetDevicePathSize (RemainingDevicePath);\r
- TempFilePath = AllocateZeroPool (HandleFilePathSize + RemainingDevicePathSize);\r
+ TempFilePath = AllocateZeroPool (HandleFilePathSize + RemainingDevicePathSize);\r
ASSERT (TempFilePath != NULL);\r
CopyMem (TempFilePath, HandleFilePath, HandleFilePathSize);\r
- CopyMem ((UINT8 *) TempFilePath + HandleFilePathSize, RemainingDevicePath, RemainingDevicePathSize);\r
+ CopyMem ((UINT8 *)TempFilePath + HandleFilePathSize, RemainingDevicePath, RemainingDevicePathSize);\r
FilePath = TempFilePath;\r
}\r
+\r
Status = gSecurity2->FileAuthentication (\r
- gSecurity2,\r
- FilePath,\r
- NULL,\r
- 0,\r
- FALSE\r
- );\r
+ gSecurity2,\r
+ FilePath,\r
+ NULL,\r
+ 0,\r
+ FALSE\r
+ );\r
if (TempFilePath != NULL) {\r
FreePool (TempFilePath);\r
}\r
+\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
return ReturnStatus;\r
}\r
\r
-\r
//\r
// Count ControllerHandle's children\r
//\r
for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
- ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink != &Prot->OpenList;\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
ChildHandleCount++;\r
//\r
// Allocate a handle buffer for ControllerHandle's children\r
//\r
- ChildHandleBuffer = AllocatePool (ChildHandleCount * sizeof(EFI_HANDLE));\r
+ ChildHandleBuffer = AllocatePool (ChildHandleCount * sizeof (EFI_HANDLE));\r
if (ChildHandleBuffer == NULL) {\r
CoreReleaseProtocolLock ();\r
return EFI_OUT_OF_RESOURCES;\r
// Fill in a handle buffer with ControllerHandle's children\r
//\r
for (Link = Handle->Protocols.ForwardLink, ChildHandleCount = 0; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
- ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink != &Prot->OpenList;\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
ChildHandleBuffer[ChildHandleCount] = OpenData->ControllerHandle;\r
return ReturnStatus;\r
}\r
\r
-\r
/**\r
Add Driver Binding Protocols from Context Driver Image Handles to sorted\r
Driver Binding Protocol list.\r
// Retrieve the Driver Binding Protocol associated with each Driver Binding Handle\r
//\r
Status = CoreHandleProtocol (\r
- DriverBindingHandleBuffer[Index],\r
- &gEfiDriverBindingProtocolGuid,\r
- (VOID **) &DriverBinding\r
- );\r
- if (EFI_ERROR (Status) || DriverBinding == NULL) {\r
+ DriverBindingHandleBuffer[Index],\r
+ &gEfiDriverBindingProtocolGuid,\r
+ (VOID **)&DriverBinding\r
+ );\r
+ if (EFI_ERROR (Status) || (DriverBinding == NULL)) {\r
continue;\r
}\r
\r
);\r
}\r
}\r
+\r
return;\r
}\r
\r
//\r
// Retrieve the Driver Binding Protocol from DriverBindingHandle\r
//\r
- Status = CoreHandleProtocol(\r
+ Status = CoreHandleProtocol (\r
DriverBindingHandle,\r
&gEfiDriverBindingProtocolGuid,\r
- (VOID **) &DriverBinding\r
+ (VOID **)&DriverBinding\r
);\r
//\r
// If DriverBindingHandle does not support the Driver Binding Protocol then return\r
//\r
- if (EFI_ERROR (Status) || DriverBinding == NULL) {\r
+ if (EFI_ERROR (Status) || (DriverBinding == NULL)) {\r
return;\r
}\r
\r
if (*NumberOfSortedDriverBindingProtocols < DriverBindingHandleCount) {\r
SortedDriverBindingProtocols[*NumberOfSortedDriverBindingProtocols] = DriverBinding;\r
}\r
+\r
*NumberOfSortedDriverBindingProtocols = *NumberOfSortedDriverBindingProtocols + 1;\r
\r
//\r
}\r
}\r
\r
-\r
/**\r
Connects a controller to a driver.\r
\r
//\r
// Initialize local variables\r
//\r
- DriverBindingHandleCount = 0;\r
- DriverBindingHandleBuffer = NULL;\r
- NumberOfSortedDriverBindingProtocols = 0;\r
- SortedDriverBindingProtocols = NULL;\r
- PlatformDriverOverride = NULL;\r
- NewDriverBindingHandleBuffer = NULL;\r
+ DriverBindingHandleCount = 0;\r
+ DriverBindingHandleBuffer = NULL;\r
+ NumberOfSortedDriverBindingProtocols = 0;\r
+ SortedDriverBindingProtocols = NULL;\r
+ PlatformDriverOverride = NULL;\r
+ NewDriverBindingHandleBuffer = NULL;\r
\r
//\r
// Get list of all Driver Binding Protocol Instances\r
Status = CoreLocateProtocol (\r
&gEfiPlatformDriverOverrideProtocolGuid,\r
NULL,\r
- (VOID **) &PlatformDriverOverride\r
+ (VOID **)&PlatformDriverOverride\r
);\r
if (!EFI_ERROR (Status) && (PlatformDriverOverride != NULL)) {\r
DriverImageHandle = NULL;\r
Status = CoreHandleProtocol (\r
DriverBindingHandleBuffer[Index],\r
&gEfiDriverFamilyOverrideProtocolGuid,\r
- (VOID **) &DriverFamilyOverride\r
+ (VOID **)&DriverFamilyOverride\r
);\r
if (!EFI_ERROR (Status) && (DriverFamilyOverride != NULL)) {\r
DriverFamilyOverrideVersion = DriverFamilyOverride->GetVersion (DriverFamilyOverride);\r
Status = CoreHandleProtocol (\r
ControllerHandle,\r
&gEfiBusSpecificDriverOverrideProtocolGuid,\r
- (VOID **) &BusSpecificDriverOverride\r
+ (VOID **)&BusSpecificDriverOverride\r
);\r
if (!EFI_ERROR (Status) && (BusSpecificDriverOverride != NULL)) {\r
DriverImageHandle = NULL;\r
HighestIndex = Index;\r
}\r
}\r
+\r
if (SortIndex != HighestIndex) {\r
- DriverBinding = SortedDriverBindingProtocols[SortIndex];\r
- SortedDriverBindingProtocols[SortIndex] = SortedDriverBindingProtocols[HighestIndex];\r
+ DriverBinding = SortedDriverBindingProtocols[SortIndex];\r
+ SortedDriverBindingProtocols[SortIndex] = SortedDriverBindingProtocols[HighestIndex];\r
SortedDriverBindingProtocols[HighestIndex] = DriverBinding;\r
}\r
}\r
//\r
OneStarted = FALSE;\r
do {\r
-\r
//\r
// Loop through the sorted Driver Binding Protocol Instances in order, and see if\r
// any of the Driver Binding Protocols support the controller specified by\r
// ControllerHandle.\r
//\r
DriverBinding = NULL;\r
- DriverFound = FALSE;\r
+ DriverFound = FALSE;\r
for (Index = 0; (Index < NumberOfSortedDriverBindingProtocols) && !DriverFound; Index++) {\r
if (SortedDriverBindingProtocols[Index] != NULL) {\r
DriverBinding = SortedDriverBindingProtocols[Index];\r
PERF_DRIVER_BINDING_SUPPORT_BEGIN (DriverBinding->DriverBindingHandle, ControllerHandle);\r
- Status = DriverBinding->Supported(\r
+ Status = DriverBinding->Supported (\r
DriverBinding,\r
ControllerHandle,\r
RemainingDevicePath\r
PERF_DRIVER_BINDING_SUPPORT_END (DriverBinding->DriverBindingHandle, ControllerHandle);\r
if (!EFI_ERROR (Status)) {\r
SortedDriverBindingProtocols[Index] = NULL;\r
- DriverFound = TRUE;\r
+ DriverFound = TRUE;\r
\r
//\r
// A driver was found that supports ControllerHandle, so attempt to start the driver\r
return EFI_NOT_FOUND;\r
}\r
\r
-\r
-\r
/**\r
Disonnects a controller from a driver\r
\r
IN EFI_HANDLE ChildHandle OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- IHANDLE *Handle;\r
- EFI_HANDLE *DriverImageHandleBuffer;\r
- EFI_HANDLE *ChildBuffer;\r
- UINTN Index;\r
- UINTN HandleIndex;\r
- UINTN DriverImageHandleCount;\r
- UINTN ChildrenToStop;\r
- UINTN ChildBufferCount;\r
- UINTN StopCount;\r
- BOOLEAN Duplicate;\r
- BOOLEAN ChildHandleValid;\r
- BOOLEAN DriverImageHandleValid;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *ProtLink;\r
- OPEN_PROTOCOL_DATA *OpenData;\r
- PROTOCOL_INTERFACE *Prot;\r
- EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;\r
+ EFI_STATUS Status;\r
+ IHANDLE *Handle;\r
+ EFI_HANDLE *DriverImageHandleBuffer;\r
+ EFI_HANDLE *ChildBuffer;\r
+ UINTN Index;\r
+ UINTN HandleIndex;\r
+ UINTN DriverImageHandleCount;\r
+ UINTN ChildrenToStop;\r
+ UINTN ChildBufferCount;\r
+ UINTN StopCount;\r
+ BOOLEAN Duplicate;\r
+ BOOLEAN ChildHandleValid;\r
+ BOOLEAN DriverImageHandleValid;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *ProtLink;\r
+ OPEN_PROTOCOL_DATA *OpenData;\r
+ PROTOCOL_INTERFACE *Prot;\r
+ EFI_DRIVER_BINDING_PROTOCOL *DriverBinding;\r
\r
//\r
// Make sure ControllerHandle is valid\r
\r
CoreAcquireProtocolLock ();\r
for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
DriverImageHandleCount++;\r
}\r
}\r
}\r
+\r
CoreReleaseProtocolLock ();\r
\r
//\r
\r
CoreAcquireProtocolLock ();\r
for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
Duplicate = FALSE;\r
- for (Index = 0; Index< DriverImageHandleCount; Index++) {\r
+ for (Index = 0; Index < DriverImageHandleCount; Index++) {\r
if (DriverImageHandleBuffer[Index] == OpenData->AgentHandle) {\r
Duplicate = TRUE;\r
break;\r
}\r
}\r
+\r
if (!Duplicate) {\r
DriverImageHandleBuffer[DriverImageHandleCount] = OpenData->AgentHandle;\r
DriverImageHandleCount++;\r
}\r
}\r
}\r
+\r
CoreReleaseProtocolLock ();\r
}\r
\r
StopCount = 0;\r
for (HandleIndex = 0; HandleIndex < DriverImageHandleCount; HandleIndex++) {\r
-\r
if (DriverImageHandleBuffer != NULL) {\r
DriverImageHandle = DriverImageHandleBuffer[HandleIndex];\r
}\r
&gEfiDriverBindingProtocolGuid,\r
(VOID **)&DriverBinding\r
);\r
- if (EFI_ERROR (Status) || DriverBinding == NULL) {\r
+ if (EFI_ERROR (Status) || (DriverBinding == NULL)) {\r
Status = EFI_INVALID_PARAMETER;\r
goto Done;\r
}\r
// Look at each protocol interface for a match\r
//\r
DriverImageHandleValid = FALSE;\r
- ChildBufferCount = 0;\r
+ ChildBufferCount = 0;\r
\r
CoreAcquireProtocolLock ();\r
for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if (OpenData->AgentHandle == DriverImageHandle) {\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0) {\r
ChildBufferCount++;\r
}\r
+\r
if ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_DRIVER) != 0) {\r
DriverImageHandleValid = TRUE;\r
}\r
}\r
}\r
}\r
+\r
CoreReleaseProtocolLock ();\r
\r
if (DriverImageHandleValid) {\r
ChildHandleValid = FALSE;\r
- ChildBuffer = NULL;\r
+ ChildBuffer = NULL;\r
if (ChildBufferCount != 0) {\r
ChildBuffer = AllocatePool (sizeof (EFI_HANDLE) * ChildBufferCount);\r
if (ChildBuffer == NULL) {\r
\r
CoreAcquireProtocolLock ();\r
for (Link = Handle->Protocols.ForwardLink; Link != &Handle->Protocols; Link = Link->ForwardLink) {\r
- Prot = CR(Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
+ Prot = CR (Link, PROTOCOL_INTERFACE, Link, PROTOCOL_INTERFACE_SIGNATURE);\r
for (ProtLink = Prot->OpenList.ForwardLink;\r
ProtLink != &Prot->OpenList;\r
- ProtLink = ProtLink->ForwardLink) {\r
+ ProtLink = ProtLink->ForwardLink)\r
+ {\r
OpenData = CR (ProtLink, OPEN_PROTOCOL_DATA, Link, OPEN_PROTOCOL_DATA_SIGNATURE);\r
if ((OpenData->AgentHandle == DriverImageHandle) &&\r
- ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0)) {\r
+ ((OpenData->Attributes & EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER) != 0))\r
+ {\r
Duplicate = FALSE;\r
for (Index = 0; Index < ChildBufferCount; Index++) {\r
if (ChildBuffer[Index] == OpenData->ControllerHandle) {\r
break;\r
}\r
}\r
+\r
if (!Duplicate) {\r
ChildBuffer[ChildBufferCount] = OpenData->ControllerHandle;\r
if (ChildHandle == ChildBuffer[ChildBufferCount]) {\r
ChildHandleValid = TRUE;\r
}\r
+\r
ChildBufferCount++;\r
}\r
}\r
}\r
}\r
+\r
CoreReleaseProtocolLock ();\r
}\r
\r
- if (ChildHandle == NULL || ChildHandleValid) {\r
+ if ((ChildHandle == NULL) || ChildHandleValid) {\r
ChildrenToStop = 0;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
if (ChildBufferCount > 0) {\r
if (ChildHandle != NULL) {\r
ChildrenToStop = 1;\r
- Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, &ChildHandle);\r
+ Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, &ChildHandle);\r
} else {\r
ChildrenToStop = ChildBufferCount;\r
- Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, ChildBuffer);\r
+ Status = DriverBinding->Stop (DriverBinding, ControllerHandle, ChildrenToStop, ChildBuffer);\r
}\r
}\r
+\r
if (!EFI_ERROR (Status) && ((ChildHandle == NULL) || (ChildBufferCount == ChildrenToStop))) {\r
Status = DriverBinding->Stop (DriverBinding, ControllerHandle, 0, NULL);\r
}\r
+\r
if (!EFI_ERROR (Status)) {\r
StopCount++;\r
}\r