From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web09.7586.1634814392007364615 for ; Thu, 21 Oct 2021 04:06:32 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=GwEuTIZL; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: guomin.jiang@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10143"; a="228877716" X-IronPort-AV: E=Sophos;i="5.87,169,1631602800"; d="scan'208";a="228877716" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Oct 2021 04:06:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.87,169,1631602800"; d="scan'208";a="632141065" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga001.fm.intel.com with ESMTP; 21 Oct 2021 04:06:27 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 21 Oct 2021 04:06:26 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 21 Oct 2021 04:06:26 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 21 Oct 2021 04:06:25 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.109) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 21 Oct 2021 04:06:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LTQT1vwi0Elvx99dTA3BmH4usZT/LA5GyxnPUEIZG8S/Fnt+SoaPeasNEvSW53G9NN2fqoeZPAi/aNACL3xGSJuZ1Qiwz13YBcQ3Ee/OdmNC8uv7ydBrV2HgoNuQ+Qe4rJwyO/2gzd9MCkjXAz8E/0gOEQcchNnSAAII+BMHe/Mf6BQv+693P4HLqJSqPqYTlQZxaQq/gNTw5rnwnewoyZl6yvIO5KkVoQbBX7ldHCCYqT+jLIkLXuFeAGpAjhfHMjwHu7N9ICj0XvGG1PL3Y/9tos96MOHOvFzCPmd+5wTY7QJfGN1u/TFFiFVR82H8zyCw3ExM/d5JM1H/YclE/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dl+1SrPMJz6h04dCMxXHFQxZbZo7cYfHH01gjGSJplU=; b=Mgm6oT4dv3o9i2o1QCKYUsWEgDNjTBBm/93s8F4HjI5RrW+fRYx018Zj+y/anr7TDg5tZ2XI1oB/H9rrMjCddQaAbgWfp+r6SFDYz+bKPFrRrgcZSO9gBsRnAPc+Ev66EvUPSBjxbTSIN/mMvMmYccmQj+6rC9TWyPch7Wx/O+0W1TWz04mT07sO+O2AKpWxL6oTtOsgPnryjGyN/qmoW6GxB/ueHzjTvoEMp+g7RBs3i60NBrRY7S40/M8q9D6SYDlyJQ7P6tMUB5bRPyKYqqi03T1YPd4LgNZ7J/BeY2Cieb9l2Y9OlF2NReLyuVr7hrn2KZnq+1n2sRP/q9u3Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dl+1SrPMJz6h04dCMxXHFQxZbZo7cYfHH01gjGSJplU=; b=GwEuTIZLY/Wi2lq/aAiFiHipyI0NKQnRU0GRCIpIQ+RPLpZKkgScwVYonaM4rMP4IpSUdFGT3otR+mmfYAVohHdoJ6Da7Gx6ShMGxkFK1U0n+xJtUBKhx4kd9oi9exsqDvq5uYpkVMVhFZoe45FvMaRdbpwtA20V0egh9wQUWBA= Received: from CH0PR11MB5561.namprd11.prod.outlook.com (2603:10b6:610:d4::8) by CH0PR11MB5561.namprd11.prod.outlook.com (2603:10b6:610:d4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4628.18; Thu, 21 Oct 2021 11:06:24 +0000 Received: from CH0PR11MB5561.namprd11.prod.outlook.com ([fe80::4907:3693:d51c:af7e]) by CH0PR11MB5561.namprd11.prod.outlook.com ([fe80::4907:3693:d51c:af7e%9]) with mapi id 15.20.4628.018; Thu, 21 Oct 2021 11:06:24 +0000 From: "Guomin Jiang" To: "Kuo, IanX" , "devel@edk2.groups.io" CC: "Chan, Amy" , "Ni, Ray" , "Yao, Jiewen" , "Wang, Jian J" , "Lu, XiaoyuX" Subject: Re: [PATCH v6 2/3] CryptoPkg/CryptLib: Add QuickSort function on BaseLib Thread-Topic: [PATCH v6 2/3] CryptoPkg/CryptLib: Add QuickSort function on BaseLib Thread-Index: AQHXw9em4Nb77BgPYEmZfKcFyey4R6vdT0Gg Date: Thu, 21 Oct 2021 11:06:24 +0000 Message-ID: References: <20211018042127.1306-1-ianx.kuo@intel.com> <20211018042127.1306-3-ianx.kuo@intel.com> In-Reply-To: <20211018042127.1306-3-ianx.kuo@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 80be4509-e2fc-47a0-6168-08d99482d229 x-ms-traffictypediagnostic: CH0PR11MB5561: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NOUlGFfAG02aB9RWxqRTTMLuJLTYy8Dn9cPINHi+cDfDgJ6H/PwnMdRSuTbfIewgRgpwBce/xqnLmgfS34J/aw2aE0DVO9I2lkWclreonHWGYB2FHUTnrOtMfEZzplrR5b+5AtCivvM2mZx5A2r6TefEyswFMXIqQixkZCFAgisZhoPr2n5+8XHbXbHwc2UMqdSyXMc5v7qZdCHl+4cN/mPYqhOgEc2houKLWHLqNtFBsRE3QYSZCpIDN1jVjEtkSNRkLRPLNM7Ea/rO2FsXBFCX4VKTc1MPB5GmBWZxlqLoxhYJ8AZ/kd5ilzg2+s9hUsf0brNeIdkMtxm6ZWCwX6zEsS1Jehzi6v42ylrbCmi0IX7vL6LKzS/p8X5oUhGHx0aVVMLzuoamb1D9ntQP8zmUNgUj8wMYmUtdHzFSa4D0yAqUyFSRob5MVykDKF5zKrAurivgpjcGvJZL2EaSYNI1kANj2H+ghUZEX80GUsPOgW3OhkdBN1bBUccG0WUcuwWwHrKHDyJuzGiwmb+jT0IWOnKs901j2Ld30BBWkscPp0r7uLPipkB4RqnGmbsNVt4XJc31q2hwIPupcP9BzvfCzuXx6VPUDpsnKL84Sqd/elXPa9rVWvHG2AU5VhEwIXthjQNixX3eebuVaMYqB84kAWPuYTVFZuJz1fiQsvfM0EvP6/vu7s3WnJlQ2IfQ2YmJaFTf6e5jsrP6Q2QVVC6XKZKs1e2Pjmmwa5A42qhkYoVotHN+mMJ6NYJC57wdLnoddWkyiW9q/ATj5DG8iBL0JowVoX4pYP9SYa0+aRc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR11MB5561.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(366004)(55016002)(9686003)(122000001)(5660300002)(76116006)(107886003)(2906002)(8936002)(66556008)(66946007)(66446008)(64756008)(66476007)(83380400001)(38100700002)(38070700005)(52536014)(316002)(54906003)(110136005)(82960400001)(33656002)(86362001)(6506007)(508600001)(53546011)(8676002)(966005)(71200400001)(26005)(4326008)(186003)(7696005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?HkoywlI8fB6tw9iK+tNPPIhXjrLCmQoY+RegRYr/Rcwkuyul9G50xuewZYMW?= =?us-ascii?Q?qvsJw/fYdp/P9xCOqqcxtYegRweaWp5SXycS+JPxToYSQ3tZXi5RCgC+bpJo?= =?us-ascii?Q?NM5o/YyB74Yg+YAAVj/vvnpDEcLS55HA7PM1eS3+rCEPMUcGme762UriSijG?= =?us-ascii?Q?otFmIe6OcmWWpXinrzsc3+e3ajT6eCc/4GzfEU2Jj/UeFq7gopFdIyG6n7zf?= =?us-ascii?Q?ADPdct0BAgWb2Yz4QQBd16Hrk1EsQroEYyGmpONKJYw2kJVbsGW1JZjWB3+Q?= =?us-ascii?Q?fkNUOB24J/V08cSZjb63+pfHMYZ8jX04lSLCgABf9vDzzmsNRJQzar6AuCm/?= =?us-ascii?Q?ttPAJjs0fYsQEoC2WJxC92fMfxy225+WS3JH3KSqFtp+8F/iZoDJPz78laH5?= =?us-ascii?Q?2hAvKzfJbylnGwua1/DZORjm3K0BPSRUzRHpeHuMmxbMjlyANqNEgEviw9Re?= =?us-ascii?Q?92sNRIzQnNwzSWhxPcs/x+IWjJmMmTUUGqCvmRqS474GWb/mnsPrCmGG5zYK?= =?us-ascii?Q?O6APbw30UmC5kATPLYQE0UCWpXvVTa3vNIYgA5Bc1r4Ss0nHRLVvcRN1I2Jw?= =?us-ascii?Q?8lMjAPHnQI2EgjewmozAnu48Bja3JluekA3vw7cePMTVvCSJIYOF2cw5+Geb?= =?us-ascii?Q?KCoC+JP3lrE0I0gtYi9KB0/TmnVK5rRKcbZ8p1q+Fn9oQdyRNgz43SynEzP6?= =?us-ascii?Q?+tLiknvrKGoZta7p5hIWxYn32wNbkMNbJBUoHfX9CyNxVC4XCdh4ObBpOhqB?= =?us-ascii?Q?NRpIG8EGTugsliUy6sNH3JutYv5f1HgnNSrqeYFcOSTRyLkCfB+AM7ARKSuX?= =?us-ascii?Q?RVNBSsD/VFi3pjcP6w/HDCTsHrYnYDVI7iZ3MnGZYycvWEsoTrsZJfNNhiVo?= =?us-ascii?Q?MEOrJ2cK0V6l+4EepdWLczNdKxFluiKW7AlBE2QpmDuXGOB74cWzHKOF8KT8?= =?us-ascii?Q?/HLY5sDRApsAfgSAuA2X+9swAfNB42D4OrKckCs0D/y79o9I9UwC8fSZLTj/?= =?us-ascii?Q?XM8XqMUSfpGoYDHw3/XAv9o+vbySIAB92vgIK3dWG9F8zu0aX5M5c8+NXkKd?= =?us-ascii?Q?SI1Z3scSFcPg/GfDIm64MBsFC0ZbNybDgTush2X/A1bgMOB/rwqupL0sVOIY?= =?us-ascii?Q?pgH48v/j8/vmOTctOHseD2xluTpBzfDZIxLYquwIIbWcRnum0ygzsozj8UL+?= =?us-ascii?Q?AFA+6SyBPxEohOQCAigkZ6/upsAbLa1GiXFdJ4IManAqqFk4KvtgnDAMdbAw?= =?us-ascii?Q?KVMuSGgwoA5QRUfIUVgrVtj+zarUcHFfJ/MO3jjCaSKDupaTsyJszUsJ/a++?= =?us-ascii?Q?/tjMn844julPLkanQk/Um3mYMw3+MkMNKZNbsRdrlwXCpBRN3bYDrlv9la3q?= =?us-ascii?Q?TYKIn6+U0MOdPN+VBhA4a/7Ivx7yv7rW/3T0d1Ldl7gU4BMGbwBydBYaO5kP?= =?us-ascii?Q?nQBYQcs9cVU=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH0PR11MB5561.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80be4509-e2fc-47a0-6168-08d99482d229 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Oct 2021 11:06:24.0131 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: guomin.jiang@intel.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5561 Return-Path: guomin.jiang@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Guomin Jiang > -----Original Message----- > From: Kuo, IanX > Sent: Monday, October 18, 2021 12:21 PM > To: devel@edk2.groups.io > Cc: Chan, Amy ; Ni, Ray ; Kuo, > IanX ; Yao, Jiewen ; Wang, > Jian J ; Lu, XiaoyuX ; Jiang= , > Guomin > Subject: [PATCH v6 2/3] CryptoPkg/CryptLib: Add QuickSort function on > BaseLib >=20 > From: IanX Kuo >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3675 >=20 > Use QuickSort instead of QuickSortWorker >=20 > Cc: Ray Ni > Cc: Jiewen Yao > Cc: Jian J Wang > Cc: Xiaoyu Lu > Cc: Guomin Jiang > Signed-off-by: IanX Kuo > --- > .../Library/BaseCryptLib/SysCall/CrtWrapper.c | 92 +------------------ > 1 file changed, 2 insertions(+), 90 deletions(-) >=20 > 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 >=20 > Cryptographic Library. >=20 >=20 >=20 > -Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
>=20 > +Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
>=20 > SPDX-License-Identifier: BSD-2-Clause-Patent >=20 >=20 >=20 > **/ >=20 > @@ -22,91 +22,6 @@ int > IN VOID *Buffer2 >=20 > ); >=20 >=20 >=20 > -// >=20 > -// Duplicated from EDKII BaseSortLib for qsort() wrapper >=20 > -// >=20 > -STATIC >=20 > -VOID >=20 > -QuickSortWorker ( >=20 > - IN OUT VOID *BufferToSort, >=20 > - IN CONST UINTN Count, >=20 > - IN CONST UINTN ElementSize, >=20 > - IN SORT_COMPARE CompareFunction, >=20 > - IN VOID *Buffer >=20 > - ) >=20 > -{ >=20 > - VOID *Pivot; >=20 > - UINTN LoopCount; >=20 > - UINTN NextSwapLocation; >=20 > - >=20 > - ASSERT(BufferToSort !=3D NULL); >=20 > - ASSERT(CompareFunction !=3D NULL); >=20 > - ASSERT(Buffer !=3D NULL); >=20 > - >=20 > - if (Count < 2 || ElementSize < 1) { >=20 > - return; >=20 > - } >=20 > - >=20 > - NextSwapLocation =3D 0; >=20 > - >=20 > - // >=20 > - // Pick a pivot (we choose last element) >=20 > - // >=20 > - Pivot =3D ((UINT8 *)BufferToSort + ((Count - 1) * ElementSize)); >=20 > - >=20 > - // >=20 > - // Now get the pivot such that all on "left" are below it >=20 > - // and everything "right" are above it >=20 > - // >=20 > - for (LoopCount =3D 0; LoopCount < Count - 1; LoopCount++) >=20 > - { >=20 > - // >=20 > - // If the element is less than the pivot >=20 > - // >=20 > - if (CompareFunction ((VOID *)((UINT8 *)BufferToSort + ((LoopCount) * > ElementSize)), Pivot) <=3D 0) { >=20 > - // >=20 > - // Swap >=20 > - // >=20 > - CopyMem (Buffer, (UINT8 *)BufferToSort + (NextSwapLocation * > ElementSize), ElementSize); >=20 > - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), > (UINT8 *)BufferToSort + ((LoopCount) * ElementSize), ElementSize); >=20 > - CopyMem ((UINT8 *)BufferToSort + ((LoopCount) * ElementSize), Buff= er, > ElementSize); >=20 > - >=20 > - // >=20 > - // Increment NextSwapLocation >=20 > - // >=20 > - NextSwapLocation++; >=20 > - } >=20 > - } >=20 > - // >=20 > - // Swap pivot to its final position (NextSwapLocation) >=20 > - // >=20 > - CopyMem (Buffer, Pivot, ElementSize); >=20 > - CopyMem (Pivot, (UINT8 *)BufferToSort + (NextSwapLocation * > ElementSize), ElementSize); >=20 > - CopyMem ((UINT8 *)BufferToSort + (NextSwapLocation * ElementSize), > Buffer, ElementSize); >=20 > - >=20 > - // >=20 > - // Now recurse on 2 partial lists. Neither of these will have the 'pi= vot' > element. >=20 > - // IE list is sorted left half, pivot element, sorted right half... >=20 > - // >=20 > - QuickSortWorker ( >=20 > - BufferToSort, >=20 > - NextSwapLocation, >=20 > - ElementSize, >=20 > - CompareFunction, >=20 > - Buffer >=20 > - ); >=20 > - >=20 > - QuickSortWorker ( >=20 > - (UINT8 *)BufferToSort + (NextSwapLocation + 1) * ElementSize, >=20 > - Count - NextSwapLocation - 1, >=20 > - ElementSize, >=20 > - CompareFunction, >=20 > - Buffer >=20 > - ); >=20 > - >=20 > - return; >=20 > -} >=20 > - >=20 > //--------------------------------------------------------- >=20 > // Standard C Run-time Library Interface Wrapper >=20 > //--------------------------------------------------------- >=20 > @@ -337,10 +252,7 @@ void qsort (void *base, size_t num, size_t width, in= t > (*compare)(const void *, c > Buffer =3D malloc (width); >=20 > ASSERT (Buffer !=3D NULL); >=20 >=20 >=20 > - // >=20 > - // Re-use PerformQuickSort() function Implementation in EDKII > BaseSortLib. >=20 > - // >=20 > - QuickSortWorker (base, (UINTN)num, (UINTN)width, > (SORT_COMPARE)compare, Buffer); >=20 > + QuickSort (base, (UINTN)num, (UINTN)width, > (BASE_SORT_COMPARE)compare, Buffer); >=20 >=20 >=20 > free (Buffer); >=20 > return; >=20 > -- > 2.30.0.windows.1