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
This commit is contained in:
qwang12
2006-07-04 12:43:59 +00:00
parent 0d2001d31d
commit 1eb73ab57a
10 changed files with 323 additions and 503 deletions

View File

@@ -1022,3 +1022,52 @@ LibPcdGetNextTokenSpace (
return (GUID *)Guid;
}
/**
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;
}