On Thu, Jul 24, 2014 at 12:51 AM, Andrew Fish <af...@apple.com> wrote:

> What is the value for _PCD_GET_MODE_32_##TokenName in the autogen of the
> module where the 0 is returned? Is it calling LibPcdGet32() or does it point
> to the global?

_PCD_GET_MODE_32_##TokenName is #defined to the appropriate
_gPcd_FixedAtBuild_##TokenName in AutoGen.h of my module. LibPcdGet32()
is not called.
The same module's AutoGen.i contains
const UINT32 _gPcd_FixedAtBuild_##TokenName = <right_pcd_value>;

But when I check the value of _gPcd_FixedAtBuild_##TokenName from my module,
it always shows as 0.


> #define PcdGet32(TokenName)                 _PCD_GET_MODE_32_##TokenName
>
> It could be due to what Laszlo suggested earlier, but I already am
> building for DEBUG.
> ASSERT() acts as a no-op for me because PcdGet at [1] simply returns 0 and
> DebugAssertEnabled always fails!
>
>
> I don’t understand how that statement matches this statement you made: “The
> execution never comes to calling LibPcdGet32(), for either BasePcdLibNull
> or PcdLib.”

I meant that ASSERT() statements do nothing throughout the codebase because of
PcdGet failing.


On Wed, Jul 23, 2014 at 6:06 PM, Laszlo Ersek <ler...@redhat.com> wrote:
> Library instances that usably resolve the PcdLib library class are:
>
> $ git grep -l 'LIBRARY_CLASS *= *PcdLib' -- '*.inf'
>
> EmulatorPkg/Library/SmbiosLib/SmbiosLib.inf
> MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
> MdePkg/Library/DxePcdLib/DxePcdLib.inf
> MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
>
> In PEIMs, you need the fourth; in DXE & UEFI drivers, you need the third.

I think I might not need these implementations for the PEI phase since I am
not using any Dymanic PCDs (as suggested in sec. 4.102 -
"MdePkg Document With Libraries.pdf" at [1]).

> However, this is not the entire picture yet, because these libraries
> delegate the work to a PPI (in PEI) and to a protocol (in DXE) that are
> provided by dedicated drivers, respectively:
> - MdeModulePkg/Universal/PCD/Pei/Pcd.inf
> - MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
>
> You should add these drivers to the corresponding (ie. PEI vs. DXE)
> APRIORI files of the firmware volumes that your FDF file defines, so
> that any driver loaded / dispatched later can use their PCD services
> (through the above-mentioned library instances). Refer to
> OvmfPkg/OvmfPkgX64.fdf for examples.

How are APRIORI drivers initialized? I couldn't figure which phase is
responsible for launching them.



[1] http://sourceforge.net/projects/edk2/files/EDK_II_Libraries/UDK2014/

Thanks,
Varad

------------------------------------------------------------------------------
Want fast and easy access to all the code in your enterprise? Index and
search up to 200,000 lines of code with a free copy of Black Duck
Code Sight - the same software that powers the world's largest code
search on Ohloh, the Black Duck Open Hub! Try it now.
http://p.sf.net/sfu/bds
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to