<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Helvetica;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:宋体;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:等线;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"\@等线";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"\@宋体";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Microsoft JhengHei";
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@Microsoft JhengHei";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:12.0pt;
        font-family:宋体;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:宋体;}
span.apple-converted-space
        {mso-style-name:apple-converted-space;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:301614227;
        mso-list-template-ids:-631231546;}
@list l1
        {mso-list-id:408621736;
        mso-list-template-ids:1565842954;}
@list l1:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l1:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l2
        {mso-list-id:621497267;
        mso-list-template-ids:-1136391034;}
@list l3
        {mso-list-id:1077706424;
        mso-list-template-ids:1565842954;}
@list l3:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l3:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4
        {mso-list-id:1314749192;
        mso-list-template-ids:2124740462;}
@list l4:level1
        {mso-level-start-at:2;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l4:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5
        {mso-list-id:1601376120;
        mso-list-type:hybrid;
        mso-list-template-ids:444601898 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l5:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l5:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l5:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l5:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l6
        {mso-list-id:1718581574;
        mso-list-template-ids:2049574226;}
@list l6:level1
        {mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level2
        {mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level3
        {mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level5
        {mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level6
        {mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level8
        {mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l6:level9
        {mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l7
        {mso-list-id:1904363029;
        mso-list-template-ids:-1738384772;}
@list l7:level1
        {mso-level-start-at:2;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">I don’t see objection so far.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">So, the final solution is:<o:p></o:p></span></p>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph" style="margin-top:0in;margin-bottom:0in;mso-list:l5 level1 lfo10">
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Add QuickSort() API to BaseLib in MdePkg.<o:p></o:p></span></li><li class="MsoListParagraph" style="mso-list:l5 level1 lfo10"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Update existing MdeModulePkg/SortLib to use QuickSort() in the implementation (proposed by Andrew Fish and Liming Gao)<o:p></o:p></span></li><li class="MsoListParagraph" style="mso-list:l5 level1 lfo10"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Update UefiCpuPkg to use QuickSortLib to remove improper dependency on MdeModulePkg<o:p></o:p></span></li></ol>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Thanks,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Ray<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Ni, Ray
<br>
<b>Sent:</b> Thursday, September 16, 2021 10:48 AM<br>
<b>To:</b> Chan, Amy <amy.chan@intel.com>; gaoliming <gaoliming@byosoft.com.cn>; 'Andrew Fish' <afish@apple.com>; 'edk2-devel-groups-io' <devel@edk2.groups.io><br>
<b>Cc:</b> Kinney, Michael D <michael.d.kinney@intel.com>; 'Gao, Liming' <liming.gao@intel.com>; Liu, Zhiguang <Zhiguang.Liu@intel.com>; Wang, Jian J <jian.j.wang@intel.com>; Gao, Zhichao <zhichao.gao@intel.com><br>
<b>Subject:</b> RE: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Amy,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">No. We only Add QuickSort() function API into BaseLib.h.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Chan, Amy <<a href="mailto:amy.chan@intel.com">amy.chan@intel.com</a>>
<br>
<b>Sent:</b> Thursday, September 16, 2021 10:46 AM<br>
<b>To:</b> gaoliming <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>>; 'Andrew Fish' <<a href="mailto:afish@apple.com">afish@apple.com</a>>; 'edk2-devel-groups-io' <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>><br>
<b>Cc:</b> Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; 'Gao, Liming' <<a href="mailto:liming.gao@intel.com">liming.gao@intel.com</a>>; Liu,
 Zhiguang <<a href="mailto:zhiguang.liu@intel.com">zhiguang.liu@intel.com</a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>>; Gao, Zhichao <<a href="mailto:zhichao.gao@intel.com">zhichao.gao@intel.com</a>><br>
<b>Subject:</b> RE: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Just to double confirm, will we have the null instance of QuickSort in MdePkg?<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Amy<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> gaoliming <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>>
<br>
<b>Sent:</b> Thursday, September 16, 2021 10:23 AM<br>
<b>To:</b> 'Andrew Fish' <<a href="mailto:afish@apple.com">afish@apple.com</a>>; 'edk2-devel-groups-io' <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>><br>
<b>Cc:</b> Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; 'Gao, Liming' <<a href="mailto:liming.gao@intel.com">liming.gao@intel.com</a>>; Liu,
 Zhiguang <<a href="mailto:zhiguang.liu@intel.com">zhiguang.liu@intel.com</a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>>; Gao, Zhichao <<a href="mailto:zhichao.gao@intel.com">zhichao.gao@intel.com</a>>; Chan, Amy <<a href="mailto:amy.chan@intel.com">amy.chan@intel.com</a>><br>
<b>Subject:</b> </span><span lang="ZH-TW" style="font-size:11.0pt;font-family:"Microsoft JhengHei",sans-serif;mso-fareast-language:ZH-TW">回复</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Andrew:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt"> </span><span style="font-size:10.5pt;font-family:等线">Thanks for your suggestion. I think your idea is better. We add new QuickSort() API to BaseLib, and update SortLib library instance to consume BaseLib
 QuickSort() API. This way has no change in current SortLib library class. It is the compatible solution.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Liming<o:p></o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:11.0pt;font-family:等线">发件人</span></b><b><span style="font-size:11.0pt;font-family:等线">:</span></b><span style="font-size:11.0pt;font-family:等线"> Andrew Fish <<a href="mailto:afish@apple.com">afish@apple.com</a>>
<br>
<b><span lang="ZH-CN">发送时间</span>:</b> 2021<span lang="ZH-CN">年</span>9<span lang="ZH-CN">月</span>16<span lang="ZH-CN">日</span> 10:13<br>
<b><span lang="ZH-CN">收件人</span>:</b> edk2-devel-groups-io <<a href="mailto:devel@edk2.groups.io">devel@edk2.groups.io</a>>; Liming Gao <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>><br>
<b><span lang="ZH-CN">抄送</span>:</b> Ni, Ray <<a href="mailto:ray.ni@intel.com">ray.ni@intel.com</a>>; Mike Kinney <<a href="mailto:michael.d.kinney@intel.com">michael.d.kinney@intel.com</a>>; Gao, Liming <<a href="mailto:liming.gao@intel.com">liming.gao@intel.com</a>>;
 Liu, Zhiguang <<a href="mailto:zhiguang.liu@intel.com">zhiguang.liu@intel.com</a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com">jian.j.wang@intel.com</a>>; Gao, Zhichao <<a href="mailto:zhichao.gao@intel.com">zhichao.gao@intel.com</a>>; Chan, Amy
 <<a href="mailto:amy.chan@intel.com">amy.chan@intel.com</a>><br>
<b><span lang="ZH-CN">主题</span>:</b> Re: [edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal">On Sep 15, 2021, at 6:26 PM, gaoliming <<a href="mailto:gaoliming@byosoft.com.cn">gaoliming@byosoft.com.cn</a>> wrote:<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Ray:</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt"> </span><span style="font-size:10.5pt;font-family:等线">SortLib has been added since 2015. I would suggest to still keep this library class. To resolve the package dependency, my proposal is to move the library
 class header file SortLib.h from MdeModulePkg to MdePkg, and still keep the library instance in MdeModulePkg. This proposal has no impact on the existing platform.</span><span class="apple-converted-space"><span style="font-size:10.5pt"> </span></span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt"> </span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">If we add QuickSort() API to the BaseLib can we not just port the existing MdeModulePkg/SortLib to use QuickSort() in the implementation? Or is there some other way to add the new thing in a backward compatible way.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Andrew Fish<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Thanks</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;font-family:等线">Liming</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<div>
<p class="MsoNormal"><b><span lang="ZH-CN" style="font-size:11.0pt;font-family:等线">发件人</span></b><b><span style="font-size:11.0pt;font-family:等线">:</span></b><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线"><a href="mailto:devel@edk2.groups.io"><span style="color:#0563C1">devel@edk2.groups.io</span></a></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线"><<a href="mailto:devel@edk2.groups.io"><span style="color:#0563C1">devel@edk2.groups.io</span></a>></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><b><span lang="ZH-CN" style="font-size:11.0pt;font-family:等线">代表</span></b><span class="apple-converted-space"><b><span style="font-size:11.0pt"> </span></b></span><span style="font-size:11.0pt;font-family:等线">Ni,
 Ray<br>
<b><span lang="ZH-CN">发送时间</span>:</b></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线">2021<span lang="ZH-CN">年</span>9<span lang="ZH-CN">月</span>14<span lang="ZH-CN">日</span></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线">14:15<br>
<b><span lang="ZH-CN">收件人</span>:</b></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线">Kinney, Michael D <<a href="mailto:michael.d.kinney@intel.com"><span style="color:#0563C1">michael.d.kinney@intel.com</span></a>>;
 Gao, Liming <<a href="mailto:liming.gao@intel.com"><span style="color:#0563C1">liming.gao@intel.com</span></a>>; Liu, Zhiguang <<a href="mailto:zhiguang.liu@intel.com"><span style="color:#0563C1">zhiguang.liu@intel.com</span></a>>; Wang, Jian J <<a href="mailto:jian.j.wang@intel.com"><span style="color:#0563C1">jian.j.wang@intel.com</span></a>>;
 Gao, Zhichao <<a href="mailto:zhichao.gao@intel.com"><span style="color:#0563C1">zhichao.gao@intel.com</span></a>><br>
<b><span lang="ZH-CN">抄送</span>:</b></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线"><a href="mailto:devel@edk2.groups.io"><span style="color:#0563C1">devel@edk2.groups.io</span></a>;
 Chan, Amy <<a href="mailto:amy.chan@intel.com"><span style="color:#0563C1">amy.chan@intel.com</span></a>><br>
<b><span lang="ZH-CN">主题</span>:</b></span><span class="apple-converted-space"><span style="font-size:11.0pt"> </span></span><span style="font-size:11.0pt;font-family:等线">[edk2-devel] RFC: Add BaseLib/QuickSort in MdePkg</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Hi package maintainers of MdePkg, MdeModulePkg and ShellPkg, community,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">A commit (<a href="https://github.com/tianocore/edk2/commit/4de77ae9890d241271f543e9195ab3516f3abec6"><span style="color:#0563C1">UefiCpuPkg/CpuCacheInfoLib: Sort CpuCacheInfo
 array</span></a>) to UefiCpuPkg let<br>
UefiCpuPkg depend on MdeModulePkg because the SortLib class and instances are all in MdeModulePkg.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">UefiCpuPkg depending on MdeModulePkg breaks the rule that “UefiCpuPkg should ONLY depend on MdePkg”.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">To address this issue, there are two approaches:<o:p></o:p></span></p>
</div>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph" style="margin-top:0in;margin-bottom:0in;mso-list:l1 level1 lfo11">
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Duplicate the sort logic in UefiCpuPkg to not depend on MdeModulePkg/SortLib<o:p></o:p></span></li><li class="MsoListParagraph" style="margin-top:0in;margin-bottom:0in;mso-list:l1 level1 lfo11">
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Add QuickSort() API to BaseLib in MdePkg.<o:p></o:p></span></li></ol>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Approach #2 (MdePkg/BaseLib/QuickSort) makes more sense because quick sort is a standard algorithm.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">We encourage consumers to update their code to use the quick sort in MdePkg and gradually deprecate today’s MdeModulePkg/SortLib.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">If you don’t have concerns, I plan to:<o:p></o:p></span></p>
</div>
<ol style="margin-top:0in" start="1" type="1">
<li class="MsoListParagraph" style="margin-top:0in;margin-bottom:0in;mso-list:l6 level1 lfo6">
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif">“Add QuickSort() to BaseLib” and update all existing consumers to use this API instead.<o:p></o:p></span></li></ol>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">VOID</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">EFIAPI</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#DCDCAA">QuickSort</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4"> (</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">  IN OUT VOID                   *</span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">BufferToSort</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">,</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">  IN CONST UINTN                </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">Count</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">,</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">  IN CONST UINTN                </span><span style="font-size:10.5pt;font-family:Consolas;color:#9CDCFE">ElementSize</span><span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">,</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">  IN       SORT_COMPARE         CompareFunction</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div style="margin-left:.25in">
<p class="MsoNormal" style="text-align:justify;line-height:14.25pt;background:#1E1E1E">
<span style="font-size:10.5pt;font-family:Consolas;color:#D4D4D4">  );</span><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<ol style="margin-top:0in" start="2" type="1">
<li class="MsoListParagraph" style="margin-top:0in;margin-bottom:0in;mso-list:l4 level1 lfo9">
<span style="font-size:11.0pt;font-family:"Calibri",sans-serif">“Add new ShellPkg/SortCompareLib”<o:p></o:p></span></li></ol>
<div style="margin-left:.5in">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">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.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Any concerns?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> <o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Thanks,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Ray<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"></o:p></span></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>


 <div width="1" style="color:white;clear:both">_._,_._,_</div> <hr>   Groups.io Links:<p>   You receive all messages sent to this group.    <p> <a target="_blank" href="https://edk2.groups.io/g/devel/message/80946">View/Reply Online (#80946)</a> |    |  <a target="_blank" href="https://groups.io/mt/85644120/1813853">Mute This Topic</a>  | <a href="https://edk2.groups.io/g/devel/post">New Topic</a><br>    <a href="https://edk2.groups.io/g/devel/editsub/1813853">Your Subscription</a> | <a href="mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |  <a href="https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>  [edk2-devel-archive@redhat.com]<br> <div width="1" style="color:white;clear:both">_._,_._,_</div>