From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: devel@edk2.groups.io
Cc: Chasel Chiu <chasel.chiu@intel.com>,
Liming Gao <gaoliming@byosoft.com.cn>,
Eric Dong <eric.dong@intel.com>
Subject: [edk2-platforms] [PATCH V1 2/2] MinPlatformPkg: Coding style cleanups in CompressLib
Date: Tue, 29 Sep 2020 17:15:29 -0700 [thread overview]
Message-ID: <20200930001529.2212-3-nathaniel.l.desimone@intel.com> (raw)
In-Reply-To: <20200930001529.2212-1-nathaniel.l.desimone@intel.com>
Signed-off-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Chasel Chiu <chasel.chiu@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Eric Dong <eric.dong@intel.com>
---
.../Library/CompressLib/CompressLib.c | 177 +++++++++---------
.../Library/CompressLib/CompressLib.inf | 4 +-
2 files changed, 95 insertions(+), 86 deletions(-)
diff --git a/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.c b/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.c
index 537eb3b693..a9aeea32c1 100644
--- a/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.c
+++ b/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.c
@@ -7,7 +7,7 @@
This sequence is further divided into Blocks and Huffman codings
are applied to each Block.
- Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -31,7 +31,6 @@
// Macro Definitions
//
typedef INT16 NODE;
-#define UINT8_MAX 0xff
#define UINT8_BIT 8
#define THRESHOLD 3
#define INIT_CRC 0
@@ -42,7 +41,7 @@ typedef INT16 NODE;
#define PERC_FLAG 0x8000U
#define CODE_BIT 16
#define NIL 0
-#define MAX_HASH_VAL (3 * WNDSIZ + (WNDSIZ / 512 + 1) * UINT8_MAX)
+#define MAX_HASH_VAL (3 * WNDSIZ + (WNDSIZ / 512 + 1) * MAX_UINT8)
#define HASH(LoopVar7, LoopVar5) ((LoopVar7) + ((LoopVar5) << (WNDBIT - 9)) + WNDSIZ * 2)
#define CRCPOLY 0xA001
#define UPDATE_CRC(LoopVar5) mCrc = mCrcTable[(mCrc ^ (LoopVar5)) & 0xFF] ^ (mCrc >> UINT8_BIT)
@@ -50,7 +49,7 @@ typedef INT16 NODE;
//
// C: the Char&Len Set; P: the Position Set; T: the exTra Set
//
-#define NC (UINT8_MAX + MAXMATCH + 2 - THRESHOLD)
+#define NC (MAX_UINT8 + MAXMATCH + 2 - THRESHOLD)
#define CBIT 9
#define NP (WNDBIT + 1)
#define PBIT 4
@@ -66,13 +65,13 @@ typedef INT16 NODE;
//
/**
- Put a dword to output stream
+ Put a dword to output stream.
@param[in] Data The dword to put.
**/
VOID
EFIAPI
-PutDword(
+PutDword (
IN UINT32 Data
);
@@ -110,7 +109,7 @@ STATIC UINT16 *mSortPtr;
STATIC UINT16 mLenCnt[17];
STATIC UINT16 mLeft[2 * NC - 1];
STATIC UINT16 mRight[2 * NC - 1];
-STATIC UINT16 mCrcTable[UINT8_MAX + 1];
+STATIC UINT16 mCrcTable[MAX_UINT8 + 1];
STATIC UINT16 mCFreq[2 * NC - 1];
STATIC UINT16 mCCode[NC];
STATIC UINT16 mPFreq[2 * NP - 1];
@@ -142,7 +141,7 @@ MakeCrcTable (
UINT32 LoopVar4;
- for (LoopVar1 = 0; LoopVar1 <= UINT8_MAX; LoopVar1++) {
+ for (LoopVar1 = 0; LoopVar1 <= MAX_UINT8; LoopVar1++) {
LoopVar4 = LoopVar1;
for (LoopVar2 = 0; LoopVar2 < UINT8_BIT; LoopVar2++) {
if ((LoopVar4 & 1) != 0) {
@@ -186,7 +185,7 @@ PutDword (
/**
Allocate memory spaces for data structures used in compression process.
-
+
@retval EFI_SUCCESS Memory was allocated successfully.
@retval EFI_OUT_OF_RESOURCES A memory allocation failed.
**/
@@ -197,9 +196,9 @@ AllocateMemory (
)
{
mText = AllocateZeroPool (WNDSIZ * 2 + MAXMATCH);
- mLevel = AllocateZeroPool ((WNDSIZ + UINT8_MAX + 1) * sizeof (*mLevel));
- mChildCount = AllocateZeroPool ((WNDSIZ + UINT8_MAX + 1) * sizeof (*mChildCount));
- mPosition = AllocateZeroPool ((WNDSIZ + UINT8_MAX + 1) * sizeof (*mPosition));
+ mLevel = AllocateZeroPool ((WNDSIZ + MAX_UINT8 + 1) * sizeof (*mLevel));
+ mChildCount = AllocateZeroPool ((WNDSIZ + MAX_UINT8 + 1) * sizeof (*mChildCount));
+ mPosition = AllocateZeroPool ((WNDSIZ + MAX_UINT8 + 1) * sizeof (*mPosition));
mParent = AllocateZeroPool (WNDSIZ * 2 * sizeof (*mParent));
mPrev = AllocateZeroPool (WNDSIZ * 2 * sizeof (*mPrev));
mNext = AllocateZeroPool ((MAX_HASH_VAL + 1) * sizeof (*mNext));
@@ -251,8 +250,8 @@ InitSlide (
{
NODE LoopVar1;
- SetMem (mLevel + WNDSIZ, (UINT8_MAX + 1) * sizeof (UINT8), 1);
- SetMem (mPosition + WNDSIZ, (UINT8_MAX + 1) * sizeof (NODE), 0);
+ SetMem (mLevel + WNDSIZ, (MAX_UINT8 + 1) * sizeof (UINT8), 1);
+ SetMem (mPosition + WNDSIZ, (MAX_UINT8 + 1) * sizeof (NODE), 0);
SetMem (mParent + WNDSIZ, WNDSIZ * sizeof (NODE), 0);
@@ -284,7 +283,7 @@ Child (
{
NODE LoopVar4;
- LoopVar4 = mNext[HASH (LoopVar6, LoopVar5)];
+ LoopVar4 = mNext[HASH (LoopVar6, LoopVar5)];
mParent[NIL] = LoopVar6; /* sentinel */
while (mParent[LoopVar4] != LoopVar6) {
LoopVar4 = mNext[LoopVar4];
@@ -299,6 +298,7 @@ Child (
@param[in] LoopVar6 The parent node.
@param[in] LoopVar5 The edge character.
@param[in] LoopVar4 The child node.
+
**/
VOID
EFIAPI
@@ -326,6 +326,7 @@ MakeChild (
Split a node.
@param[in] Old The node to split.
+
**/
VOID
EFIAPI
@@ -340,12 +341,12 @@ Split (
New = mAvail;
mAvail = mNext[New];
mChildCount[New] = 0;
- LoopVar10 = mPrev[Old];
+ LoopVar10 = mPrev[Old];
mPrev[New] = LoopVar10;
- mNext[LoopVar10] = New;
- LoopVar10 = mNext[Old];
+ mNext[LoopVar10] = New;
+ LoopVar10 = mNext[Old];
mNext[New] = LoopVar10;
- mPrev[LoopVar10] = New;
+ mPrev[LoopVar10] = New;
mParent[New] = mParent[Old];
mLevel[New] = (UINT8) mMatchLen;
mPosition[New] = mPos;
@@ -414,7 +415,7 @@ InsertNode (
if (LoopVar4 == NIL) {
MakeChild (LoopVar6, LoopVar5, mPos);
mMatchLen = 1;
- return ;
+ return;
}
mMatchLen = 2;
@@ -426,10 +427,10 @@ InsertNode (
//
for (;;) {
if (LoopVar4 >= WNDSIZ) {
- LoopVar2 = MAXMATCH;
+ LoopVar2 = MAXMATCH;
mMatchPos = LoopVar4;
} else {
- LoopVar2 = mLevel[LoopVar4];
+ LoopVar2 = mLevel[LoopVar4];
mMatchPos = (NODE) (mPosition[LoopVar4] & ~PERC_FLAG);
}
@@ -437,12 +438,12 @@ InsertNode (
mMatchPos -= WNDSIZ;
}
- TempString3 = &mText[mPos + mMatchLen];
- TempString2 = &mText[mMatchPos + mMatchLen];
+ TempString3 = &mText[mPos + mMatchLen];
+ TempString2 = &mText[mMatchPos + mMatchLen];
while (mMatchLen < LoopVar2) {
if (*TempString3 != *TempString2) {
Split (LoopVar4);
- return ;
+ return;
}
mMatchLen++;
@@ -459,20 +460,20 @@ InsertNode (
LoopVar4 = Child (LoopVar6, *TempString3);
if (LoopVar4 == NIL) {
MakeChild (LoopVar6, *TempString3, mPos);
- return ;
+ return;
}
mMatchLen++;
}
LoopVar10 = mPrev[LoopVar4];
- mPrev[mPos] = LoopVar10;
+ mPrev[mPos] = LoopVar10;
mNext[LoopVar10] = mPos;
LoopVar10 = mNext[LoopVar4];
- mNext[mPos] = LoopVar10;
+ mNext[mPos] = LoopVar10;
mPrev[LoopVar10] = mPos;
- mParent[mPos] = LoopVar6;
- mParent[LoopVar4] = NIL;
+ mParent[mPos] = LoopVar6;
+ mParent[LoopVar4] = NIL;
//
// Special usage of 'next'
@@ -503,22 +504,22 @@ DeleteNode (
NODE LoopVar9;
if (mParent[mPos] == NIL) {
- return ;
+ return;
}
LoopVar4 = mPrev[mPos];
- LoopVar11 = mNext[mPos];
+ LoopVar11 = mNext[mPos];
mNext[LoopVar4] = LoopVar11;
- mPrev[LoopVar11] = LoopVar4;
+ mPrev[LoopVar11] = LoopVar4;
LoopVar4 = mParent[mPos];
- mParent[mPos] = NIL;
+ mParent[mPos] = NIL;
if (LoopVar4 >= WNDSIZ) {
- return ;
+ return;
}
mChildCount[LoopVar4]--;
if (mChildCount[LoopVar4] > 1) {
- return ;
+ return;
}
LoopVar10 = (NODE) (mPosition[LoopVar4] & ~PERC_FLAG);
@@ -529,7 +530,7 @@ DeleteNode (
LoopVar11 = LoopVar10;
LoopVar6 = mParent[LoopVar4];
LoopVar9 = mPosition[LoopVar6];
- while ((LoopVar9 & PERC_FLAG) != 0){
+ while ((LoopVar9 & PERC_FLAG) != 0) {
LoopVar9 &= ~PERC_FLAG;
if (LoopVar9 >= mPos) {
LoopVar9 -= WNDSIZ;
@@ -558,9 +559,9 @@ DeleteNode (
LoopVar11 = Child (LoopVar4, mText[LoopVar10 + mLevel[LoopVar4]]);
LoopVar10 = mPrev[LoopVar11];
- LoopVar9 = mNext[LoopVar11];
+ LoopVar9 = mNext[LoopVar11];
mNext[LoopVar10] = LoopVar9;
- mPrev[LoopVar9] = LoopVar10;
+ mPrev[LoopVar9] = LoopVar10;
LoopVar10 = mPrev[LoopVar4];
mNext[LoopVar10] = LoopVar11;
mPrev[LoopVar11] = LoopVar10;
@@ -568,9 +569,9 @@ DeleteNode (
mPrev[LoopVar10] = LoopVar11;
mNext[LoopVar11] = LoopVar10;
mParent[LoopVar11] = mParent[LoopVar4];
- mParent[LoopVar4] = NIL;
- mNext[LoopVar4] = mAvail;
- mAvail = LoopVar4;
+ mParent[LoopVar4] = NIL;
+ mNext[LoopVar4] = mAvail;
+ mAvail = LoopVar4;
}
/**
@@ -580,6 +581,7 @@ DeleteNode (
@param[in] LoopVar8 The number of bytes to read.
@return The number of bytes actually read.
+
**/
INT32
EFIAPI
@@ -613,6 +615,7 @@ FreadCrc (
@retval TRUE The operation was successful.
@retval FALSE The operation failed due to insufficient memory.
+
**/
BOOLEAN
EFIAPI
@@ -647,12 +650,13 @@ GetNextMatch (
/**
Send entry LoopVar1 down the queue.
- @param[in] LoopVar1 The index of the item to move.
+ @param[in] Index The index of the item to move.
+
**/
VOID
EFIAPI
DownHeap (
- IN INT32 i
+ IN INT32 Index
)
{
INT32 LoopVar1;
@@ -660,10 +664,10 @@ DownHeap (
INT32 LoopVar2;
//
- // priority queue: send i-th entry down heap
+ // priority queue: send Index-th entry down heap
//
- LoopVar2 = mHeap[i];
- LoopVar1 = 2 * i;
+ LoopVar2 = mHeap[Index];
+ LoopVar1 = 2 * Index;
while (LoopVar1 <= mHeapSize) {
if (LoopVar1 < mHeapSize && mFreq[mHeap[LoopVar1]] > mFreq[mHeap[LoopVar1 + 1]]) {
LoopVar1++;
@@ -673,18 +677,19 @@ DownHeap (
break;
}
- mHeap[i] = mHeap[LoopVar1];
- i = LoopVar1;
- LoopVar1 = 2 * i;
+ mHeap[Index] = mHeap[LoopVar1];
+ Index = LoopVar1;
+ LoopVar1 = 2 * Index;
}
- mHeap[i] = (INT16) LoopVar2;
+ mHeap[Index] = (INT16) LoopVar2;
}
/**
Count the number of each code length for a Huffman tree.
@param[in] LoopVar1 The top node.
+
**/
VOID
EFIAPI
@@ -758,17 +763,18 @@ MakeLen (
/**
Assign code to each symbol based on the code length array.
-
+
@param[in] LoopVar8 The number of symbols.
@param[in] Len The code length array.
@param[out] Code The stores codes for each symbol.
+
**/
VOID
EFIAPI
MakeCode (
IN INT32 LoopVar8,
- IN UINT8 Len[ ],
- OUT UINT16 Code[ ]
+ IN UINT8 Len[],
+ OUT UINT16 Code[]
)
{
INT32 LoopVar1;
@@ -783,7 +789,7 @@ MakeCode (
Code[LoopVar1] = Start[Len[LoopVar1]]++;
}
}
-
+
/**
Generates Huffman codes given a frequency distribution of symbols.
@@ -793,14 +799,15 @@ MakeCode (
@param[out] CodeParm The code for each symbol.
@return The root of the Huffman tree.
+
**/
INT32
EFIAPI
MakeTree (
IN INT32 NParm,
- IN UINT16 FreqParm[ ],
- OUT UINT8 LenParm[ ],
- OUT UINT16 CodeParm[ ]
+ IN UINT16 FreqParm[],
+ OUT UINT8 LenParm[],
+ OUT UINT16 CodeParm[]
)
{
INT32 LoopVar1;
@@ -815,11 +822,11 @@ MakeTree (
// make tree, calculate len[], return root
//
mTempInt32 = NParm;
- mFreq = FreqParm;
- mLen = LenParm;
- Avail = mTempInt32;
- mHeapSize = 0;
- mHeap[1] = 0;
+ mFreq = FreqParm;
+ mLen = LenParm;
+ Avail = mTempInt32;
+ mHeapSize = 0;
+ mHeap[1] = 0;
for (LoopVar1 = 0; LoopVar1 < mTempInt32; LoopVar1++) {
mLen[LoopVar1] = 0;
if ((mFreq[LoopVar1]) != 0) {
@@ -856,7 +863,7 @@ MakeTree (
LoopVar3 = Avail++;
mFreq[LoopVar3] = (UINT16) (mFreq[LoopVar1] + mFreq[LoopVar2]);
- mHeap[1] = (INT16) LoopVar3;
+ mHeap[1] = (INT16) LoopVar3;
DownHeap (1);
mLeft[LoopVar3] = (UINT16) LoopVar1;
mRight[LoopVar3] = (UINT16) LoopVar2;
@@ -877,6 +884,7 @@ MakeTree (
@param[in] LoopVar8 The rightmost LoopVar8 bits of the data is used.
@param[in] x The data.
+
**/
VOID
EFIAPI
@@ -891,7 +899,7 @@ PutBits (
mSubBitBuf |= x << (mBitCount -= LoopVar8);
} else {
- Temp = (UINT8)(mSubBitBuf | (x >> (LoopVar8 -= mBitCount)));
+ Temp = (UINT8) (mSubBitBuf | (x >> (LoopVar8 -= mBitCount)));
if (mDst < mDstUpperLimit) {
*mDst++ = Temp;
}
@@ -901,7 +909,7 @@ PutBits (
mSubBitBuf = x << (mBitCount = UINT8_BIT - LoopVar8);
} else {
- Temp = (UINT8)(x >> (LoopVar8 - UINT8_BIT));
+ Temp = (UINT8) (x >> (LoopVar8 - UINT8_BIT));
if (mDst < mDstUpperLimit) {
*mDst++ = Temp;
}
@@ -950,7 +958,7 @@ EncodeP (
PutBits (mPTLen[LoopVar5], mPTCode[LoopVar5]);
if (LoopVar5 > 1) {
- PutBits(LoopVar5 - 1, LoopVar7 & (0xFFFFU >> (17 - LoopVar5)));
+ PutBits (LoopVar5 - 1, LoopVar7 & (0xFFFFU >> (17 - LoopVar5)));
}
}
@@ -1057,6 +1065,7 @@ WritePTLen (
/**
Outputs the code length array for Char&Length Set.
+
**/
VOID
EFIAPI
@@ -1136,8 +1145,8 @@ SendBlock (
UINT32 Size;
Flags = 0;
- Root = MakeTree (NC, mCFreq, mCLen, mCCode);
- Size = mCFreq[Root];
+ Root = MakeTree (NC, mCFreq, mCLen, mCCode);
+ Size = mCFreq[Root];
PutBits (16, Size);
if (Root >= NC) {
CountTFreq ();
@@ -1172,8 +1181,8 @@ SendBlock (
} else {
Flags <<= 1;
}
- if ((Flags & (1U << (UINT8_BIT - 1))) != 0){
- EncodeC(mBuf[Pos++] + (1U << UINT8_BIT));
+ if ((Flags & (1U << (UINT8_BIT - 1))) != 0) {
+ EncodeC (mBuf[Pos++] + (1U << UINT8_BIT));
LoopVar3 = mBuf[Pos++] << UINT8_BIT;
LoopVar3 += mBuf[Pos++];
@@ -1209,7 +1218,7 @@ HufEncodeStart (
/**
Outputs an Original Character or a Pointer.
- @param[in] LoopVar5 The original character or the 'String Length' element of
+ @param[in] LoopVar5 The original character or the 'String Length' element of
a Pointer.
@param[in] LoopVar7 The 'Position' field of a Pointer.
**/
@@ -1235,11 +1244,11 @@ CompressOutput (
mBuf[mOutputPos++] = (UINT8) LoopVar5;
mCFreq[LoopVar5]++;
if (LoopVar5 >= (1U << UINT8_BIT)) {
- mBuf[CPos] = (UINT8)(mBuf[CPos]|mOutputMask);
- mBuf[mOutputPos++] = (UINT8)(LoopVar7 >> UINT8_BIT);
+ mBuf[CPos] = (UINT8) (mBuf[CPos]|mOutputMask);
+ mBuf[mOutputPos++] = (UINT8) (LoopVar7 >> UINT8_BIT);
mBuf[mOutputPos++] = (UINT8) LoopVar7;
- LoopVar5 = 0;
- while (LoopVar7!=0) {
+ LoopVar5 = 0;
+ while (LoopVar7 != 0) {
LoopVar7 >>= 1;
LoopVar5++;
}
@@ -1301,8 +1310,8 @@ Encode (
}
while (mRemainder > 0) {
- LastMatchLen = mMatchLen;
- LastMatchPos = mMatchPos;
+ LastMatchLen = mMatchLen;
+ LastMatchPos = mMatchPos;
if (!GetNextMatch ()) {
Status = EFI_OUT_OF_RESOURCES;
}
@@ -1315,14 +1324,14 @@ Encode (
// Not enough benefits are gained by outputting a pointer,
// so just output the original character
//
- CompressOutput(mText[mPos - 1], 0);
+ CompressOutput (mText[mPos - 1], 0);
} else {
//
// Outputting a pointer is beneficial enough, do it.
//
- CompressOutput(LastMatchLen + (UINT8_MAX + 1 - THRESHOLD),
- (mPos - LastMatchPos - 2) & (WNDSIZ - 1));
+ CompressOutput (LastMatchLen + (MAX_UINT8 + 1 - THRESHOLD),
+ (mPos - LastMatchPos - 2) & (WNDSIZ - 1));
LastMatchLen--;
while (LastMatchLen > 0) {
if (!GetNextMatch ()) {
@@ -1381,15 +1390,15 @@ Compress (
mSrc = SrcBuffer;
mSrcUpperLimit = mSrc + SrcSize;
mDst = DstBuffer;
- mDstUpperLimit = mDst +*DstSize;
+ mDstUpperLimit = mDst + *DstSize;
PutDword (0L);
PutDword (0L);
MakeCrcTable ();
- mOrigSize = mCompSize = 0;
- mCrc = INIT_CRC;
+ mOrigSize = mCompSize = 0;
+ mCrc = INIT_CRC;
//
// Compress it
diff --git a/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.inf b/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.inf
index 6a8ac3c588..4e069246d0 100644
--- a/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.inf
+++ b/Platform/Intel/MinPlatformPkg/Library/CompressLib/CompressLib.inf
@@ -1,7 +1,7 @@
## @file
-# UEFI Decompress Library implementation.
+# UEFI Compression Library implementation.
#
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
--
2.27.0.windows.1
next prev parent reply other threads:[~2020-09-30 0:15 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-30 0:15 [edk2-platforms] [PATCH V1 0/2] MinPlatformPkg: Minor fixes in CompressLib Nate DeSimone
2020-09-30 0:15 ` [edk2-platforms] [PATCH V1 1/2] MinPlatformPkg: Add missing bounds checks to CompressLib Nate DeSimone
2020-10-01 17:25 ` Chiu, Chasel
2020-09-30 0:15 ` Nate DeSimone [this message]
2020-10-01 17:25 ` [edk2-platforms] [PATCH V1 2/2] MinPlatformPkg: Coding style cleanups in CompressLib Chiu, Chasel
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=20200930001529.2212-3-nathaniel.l.desimone@intel.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