From: "Guomin Jiang" <guomin.jiang@intel.com>
To: "Kuo, IanX" <ianx.kuo@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chan, Amy" <amy.chan@intel.com>, "Ni, Ray" <ray.ni@intel.com>,
"Yao, Jiewen" <jiewen.yao@intel.com>,
"Wang, Jian J" <jian.j.wang@intel.com>,
"Lu, XiaoyuX" <xiaoyux.lu@intel.com>
Subject: Re: [PATCH v6 2/3] CryptoPkg/CryptLib: Add QuickSort function on BaseLib
Date: Thu, 21 Oct 2021 11:06:24 +0000 [thread overview]
Message-ID: <CH0PR11MB5561BF5DF3D53E1B6EEA7A659DBF9@CH0PR11MB5561.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20211018042127.1306-3-ianx.kuo@intel.com>
Reviewed-by: Guomin Jiang <guomin.jiang@intel.com>
> -----Original Message-----
> From: Kuo, IanX <ianx.kuo@intel.com>
> Sent: Monday, October 18, 2021 12:21 PM
> To: devel@edk2.groups.io
> Cc: Chan, Amy <amy.chan@intel.com>; Ni, Ray <ray.ni@intel.com>; Kuo,
> IanX <ianx.kuo@intel.com>; Yao, Jiewen <jiewen.yao@intel.com>; Wang,
> Jian J <jian.j.wang@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; Jiang,
> Guomin <guomin.jiang@intel.com>
> Subject: [PATCH v6 2/3] CryptoPkg/CryptLib: Add QuickSort function on
> BaseLib
>
> From: IanX Kuo <ianx.kuo@intel.com>
>
> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3675
>
> Use QuickSort instead of QuickSortWorker
>
> Cc: Ray Ni <ray.ni@intel.com>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Xiaoyu Lu <xiaoyux.lu@intel.com>
> Cc: Guomin Jiang <guomin.jiang@intel.com>
> Signed-off-by: IanX Kuo <ianx.kuo@intel.com>
> ---
> .../Library/BaseCryptLib/SysCall/CrtWrapper.c | 92 +------------------
> 1 file changed, 2 insertions(+), 90 deletions(-)
>
> diff --git a/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
> b/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
> index 42235ab96a..b10edaae5b 100644
> --- a/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
> +++ b/CryptoPkg/Library/BaseCryptLib/SysCall/CrtWrapper.c
> @@ -2,7 +2,7 @@
> C Run-Time Libraries (CRT) Wrapper Implementation for OpenSSL-based
>
> Cryptographic Library.
>
>
>
> -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
>
> +Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.<BR>
>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
>
>
> **/
>
> @@ -22,91 +22,6 @@ int
> IN VOID *Buffer2
>
> );
>
>
>
> -//
>
> -// Duplicated from EDKII BaseSortLib for qsort() wrapper
>
> -//
>
> -STATIC
>
> -VOID
>
> -QuickSortWorker (
>
> - IN OUT VOID *BufferToSort,
>
> - IN CONST UINTN Count,
>
> - IN CONST UINTN ElementSize,
>
> - IN SORT_COMPARE CompareFunction,
>
> - IN VOID *Buffer
>
> - )
>
> -{
>
> - VOID *Pivot;
>
> - UINTN LoopCount;
>
> - UINTN NextSwapLocation;
>
> -
>
> - ASSERT(BufferToSort != NULL);
>
> - ASSERT(CompareFunction != NULL);
>
> - ASSERT(Buffer != NULL);
>
> -
>
> - if (Count < 2 || ElementSize < 1) {
>
> - return;
>
> - }
>
> -
>
> - NextSwapLocation = 0;
>
> -
>
> - //
>
> - // Pick a pivot (we choose last element)
>
> - //
>
> - Pivot = ((UINT8 *)BufferToSort + ((Count - 1) * ElementSize));
>
> -
>
> - //
>
> - // Now get the pivot such that all on "left" are below it
>
> - // and everything "right" are above it
>
> - //
>
> - for (LoopCount = 0; LoopCount < Count - 1; LoopCount++)
>
> - {
>
> - //
>
> - // If the element is less than the pivot
>
> - //
>
> - if (CompareFunction ((VOID *)((UINT8 *)BufferToSort + ((LoopCount) *
> ElementSize)), Pivot) <= 0) {
>
> - //
>
> - // Swap
>
> - //
>
> - CopyMem (Buffer, (UINT8 *)BufferToSort + (NextSwapLocation *
> ElementSize), ElementSize);
>
> - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize),
> (UINT8 *)BufferToSort + ((LoopCount) * ElementSize), ElementSize);
>
> - CopyMem ((UINT8 *)BufferToSort + ((LoopCount) * ElementSize), Buffer,
> ElementSize);
>
> -
>
> - //
>
> - // Increment NextSwapLocation
>
> - //
>
> - NextSwapLocation++;
>
> - }
>
> - }
>
> - //
>
> - // Swap pivot to its final position (NextSwapLocation)
>
> - //
>
> - CopyMem (Buffer, Pivot, ElementSize);
>
> - CopyMem (Pivot, (UINT8 *)BufferToSort + (NextSwapLocation *
> ElementSize), ElementSize);
>
> - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize),
> Buffer, ElementSize);
>
> -
>
> - //
>
> - // Now recurse on 2 partial lists. Neither of these will have the 'pivot'
> element.
>
> - // IE list is sorted left half, pivot element, sorted right half...
>
> - //
>
> - QuickSortWorker (
>
> - BufferToSort,
>
> - NextSwapLocation,
>
> - ElementSize,
>
> - CompareFunction,
>
> - Buffer
>
> - );
>
> -
>
> - QuickSortWorker (
>
> - (UINT8 *)BufferToSort + (NextSwapLocation + 1) * ElementSize,
>
> - Count - NextSwapLocation - 1,
>
> - ElementSize,
>
> - CompareFunction,
>
> - Buffer
>
> - );
>
> -
>
> - return;
>
> -}
>
> -
>
> //---------------------------------------------------------
>
> // Standard C Run-time Library Interface Wrapper
>
> //---------------------------------------------------------
>
> @@ -337,10 +252,7 @@ void qsort (void *base, size_t num, size_t width, int
> (*compare)(const void *, c
> Buffer = malloc (width);
>
> ASSERT (Buffer != NULL);
>
>
>
> - //
>
> - // Re-use PerformQuickSort() function Implementation in EDKII
> BaseSortLib.
>
> - //
>
> - QuickSortWorker (base, (UINTN)num, (UINTN)width,
> (SORT_COMPARE)compare, Buffer);
>
> + QuickSort (base, (UINTN)num, (UINTN)width,
> (BASE_SORT_COMPARE)compare, Buffer);
>
>
>
> free (Buffer);
>
> return;
>
> --
> 2.30.0.windows.1
next prev parent reply other threads:[~2021-10-21 11:06 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-18 4:21 [PATCH v6 0/3] Add function QuickSort into MdePkg/BaseLib IanX Kuo
2021-10-18 4:21 ` [PATCH v6 1/3] MdeModulePkg/SortLib: Add QuickSort function on BaseLib IanX Kuo
2021-10-20 3:20 ` Wang, Jian J
2021-10-18 4:21 ` [PATCH v6 2/3] CryptoPkg/CryptLib: " IanX Kuo
2021-10-21 11:06 ` Guomin Jiang [this message]
2021-10-18 4:21 ` [PATCH v6 3/3] UefiCpuPkg/CpuCacheInfoLib: " IanX Kuo
2021-10-19 1:59 ` Ni, Ray
[not found] ` <16AF0531A156CE70.24927@groups.io>
2021-10-19 2:08 ` [edk2-devel] [PATCH v6 2/3] CryptoPkg/CryptLib: " IanX Kuo
[not found] ` <16AF0531824632DE.13161@groups.io>
2021-10-19 2:09 ` [edk2-devel] [PATCH v6 1/3] MdeModulePkg/SortLib: " IanX Kuo
2021-10-20 1:49 ` 回复: " gaoliming
2021-10-20 5:45 ` IanX Kuo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CH0PR11MB5561BF5DF3D53E1B6EEA7A659DBF9@CH0PR11MB5561.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox