summaryrefslogtreecommitdiff
path: root/MdePkg/Library/BasePcdLibNull/PcdLib.c
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2006-07-04 12:43:59 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2006-07-04 12:43:59 +0000
commit1eb73ab57aa6d49cd82eb2b3305ec39bba591d1f (patch)
tree19c89a20bac24b562c2b8b139d8889694647a1fa /MdePkg/Library/BasePcdLibNull/PcdLib.c
parent0d2001d31d1adf5d6abbff41c3eda82a2bd208cc (diff)
downloadedk2-platforms-1eb73ab57aa6d49cd82eb2b3305ec39bba591d1f.tar.xz
Added LibPatchPcdSetPtr.
Cleaup Pcd Database code generation routine. Fixed a few bugs. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@745 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdePkg/Library/BasePcdLibNull/PcdLib.c')
-rw-r--r--MdePkg/Library/BasePcdLibNull/PcdLib.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/MdePkg/Library/BasePcdLibNull/PcdLib.c b/MdePkg/Library/BasePcdLibNull/PcdLib.c
index a2e46b05b2..e58965cc68 100644
--- a/MdePkg/Library/BasePcdLibNull/PcdLib.c
+++ b/MdePkg/Library/BasePcdLibNull/PcdLib.c
@@ -780,3 +780,52 @@ LibPcdGetNextTokenSpace (
{
return NULL;
}
+
+
+
+/**
+ Sets the PCD entry specified by PatchVariable to the value specified by Buffer
+ and SizeOfValue. Buffer is returned. If SizeOfValue is greater than
+ MaximumDatumSize, then set SizeOfValue to MaximumDatumSize and return
+ NULL to indicate that the set operation was not actually performed.
+ If SizeOfValue is set to MAX_ADDRESS, then SizeOfValue must be set to
+ MaximumDatumSize and NULL must be returned.
+
+ If PatchVariable is NULL, then ASSERT().
+ If SizeOfValue is NULL, then ASSERT().
+ If SizeOfValue > 0 and Buffer is NULL, then ASSERT().
+
+ @param[in] PatchVariable A pointer to the global variable in a module that is
+ the target of the set operation.
+ @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
+ @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
+ @param[in] Buffer A pointer to the buffer to used to set the target variable.
+
+**/
+VOID *
+EFIAPI
+LibPatchPcdSetPtr (
+ IN VOID *PatchVariable,
+ IN UINTN MaximumDatumSize,
+ IN OUT UINTN *SizeOfBuffer,
+ IN CONST VOID *Buffer
+ )
+{
+ ASSERT (PatchVariable != NULL);
+ ASSERT (SizeOfBuffer != NULL);
+
+ if (*SizeOfBuffer > 0) {
+ ASSERT (Buffer != NULL);
+ }
+
+ if ((*SizeOfBuffer > MaximumDatumSize) ||
+ (*SizeOfBuffer == MAX_ADDRESS)) {
+ *SizeOfBuffer = MaximumDatumSize;
+ return NULL;
+ }
+
+ CopyMem (PatchVariable, Buffer, *SizeOfBuffer);
+
+ return (VOID *) Buffer;
+}
+