which is used to enable recovery function from USB Drivers.\r
\r
Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.<BR>\r
+Copyright (C) 2022 Advanced Micro Devices, Inc. All rights reserved.<BR>\r
\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
return Pool;\r
}\r
\r
+/**\r
+ Unlink the memory block from the pool's list.\r
+\r
+ @param Head The block list head of the memory's pool.\r
+ @param BlockToUnlink The memory block to unlink.\r
+\r
+**/\r
+VOID\r
+UsbHcUnlinkMemBlock (\r
+ IN USBHC_MEM_BLOCK *Head,\r
+ IN USBHC_MEM_BLOCK *BlockToUnlink\r
+ )\r
+{\r
+ USBHC_MEM_BLOCK *Block;\r
+\r
+ ASSERT ((Head != NULL) && (BlockToUnlink != NULL));\r
+\r
+ for (Block = Head; Block != NULL; Block = Block->Next) {\r
+ if (Block->Next == BlockToUnlink) {\r
+ Block->Next = BlockToUnlink->Next;\r
+ BlockToUnlink->Next = NULL;\r
+ break;\r
+ }\r
+ }\r
+}\r
+\r
/**\r
Release the memory management pool.\r
\r
// first block.\r
//\r
for (Block = Pool->Head->Next; Block != NULL; Block = Pool->Head->Next) {\r
- // UsbHcUnlinkMemBlock (Pool->Head, Block);\r
+ UsbHcUnlinkMemBlock (Pool->Head, Block);\r
UsbHcFreeMemBlock (Pool, Block);\r
}\r
\r
// Release the current memory block if it is empty and not the head\r
//\r
if ((Block != Head) && UsbHcIsMemBlockEmpty (Block)) {\r
- // UsbHcUnlinkMemBlock (Head, Block);\r
+ UsbHcUnlinkMemBlock (Head, Block);\r
UsbHcFreeMemBlock (Pool, Block);\r
}\r
}\r