resend using Liming's new email address.

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Ni, Ray
Sent: Tuesday, September 14, 2021 2:15 PM
To: Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming 
<liming....@intel.com>; Liu, Zhiguang <zhiguang....@intel.com>; Wang, Jian J 
<jian.j.w...@intel.com>; Gao, Zhichao <zhichao....@intel.com>
Cc: devel@edk2.groups.io; Chan, Amy <amy.c...@intel.com>
Subject: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg

Hi package maintainers of MdePkg, MdeModulePkg and ShellPkg, community,

A commit (UefiCpuPkg/CpuCacheInfoLib: Sort CpuCacheInfo 
array<https://github.com/tianocore/edk2/commit/4de77ae9890d241271f543e9195ab3516f3abec6>)
 to UefiCpuPkg let
UefiCpuPkg depend on MdeModulePkg because the SortLib class and instances are 
all in MdeModulePkg.

UefiCpuPkg depending on MdeModulePkg breaks the rule that "UefiCpuPkg should 
ONLY depend on MdePkg".

To address this issue, there are two approaches:

  1.  Duplicate the sort logic in UefiCpuPkg to not depend on 
MdeModulePkg/SortLib
  2.  Add QuickSort() API to BaseLib in MdePkg.

Approach #2 (MdePkg/BaseLib/QuickSort) makes more sense because quick sort is a 
standard algorithm.
We encourage consumers to update their code to use the quick sort in MdePkg and 
gradually deprecate today's MdeModulePkg/SortLib.

If you don't have concerns, I plan to:

  1.  "Add QuickSort() to BaseLib" and update all existing consumers to use 
this API instead.
VOID
EFIAPI
QuickSort (
  IN OUT VOID                   *BufferToSort,
  IN CONST UINTN                Count,
  IN CONST UINTN                ElementSize,
  IN       SORT_COMPARE         CompareFunction
  );


  1.  "Add new ShellPkg/SortCompareLib"

Background: ShellPkg requires to sort devicepath/string so 3 APIs in 
UefiSortLib (DevicePathCompare, StringNoCaseCompare, StringCompare) are 
provided for Shell usage. we can move the 3 APIs to the SortCompareLib and 
update Shell code to use BaseLib/QuickSort directly, with the sort compare 
function from SortCompareLib.

Any concerns?

Thanks,
Ray



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#80640): https://edk2.groups.io/g/devel/message/80640
Mute This Topic: https://groups.io/mt/85596052/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to