Udit, As Marvin points out the [LibraryClasses] section of the INF file are going to imply the order of the library constructor calls in the AutoGen
Worst case you can demote FpgaInterfaceInit () from being a constructor to just being a public library function that the other lib can call explicitly from its constructor. Maybe that is too drastic and you could must move a function out of FpgaInterfaceInit () and make that function part of the Public library interface? Thanks, Andrew Fish > On Jul 19, 2018, at 11:14 AM, Marvin H?user <[email protected]> > wrote: > > Hey Udit, > > You cannot explicitly influence the order of the calls, but implicitly via > the dependency tree, which means you need to make SerialPortLib depend on > your LibraryClass instance. > You did not mention which SerialPortLib instance you use, but probably you > need to execute FpgaInterfaceInit() earlier in platform code or fork > SerialPortLib for now. > > Regards, > Marvin > >> -----Original Message----- >> From: edk2-devel <[email protected]> On Behalf Of Udit >> Kumar >> Sent: Thursday, July 19, 2018 9:33 AM >> To: [email protected] >> Subject: [edk2] Help on AutoGen Files >> >> Hi Experts, >> How I can change the order of initialization in Constructor list of autogen >> file. >> In my build system, if I look at >> MdeModulePkg/Universal/PCD/Pei/Pcd/DEBUG/AutoGen.c >> Below is function of Library Constructor List >> >> VOID >> EFIAPI >> ProcessLibraryConstructorList ( >> IN EFI_PEI_FILE_HANDLE FileHandle, >> IN CONST EFI_PEI_SERVICES **PeiServices >> ) >> { >> EFI_STATUS Status; >> >> Status = BaseDebugLibSerialPortConstructor (); >> ASSERT_EFI_ERROR (Status); >> >> Status = PeiServicesTablePointerLibConstructor (FileHandle, PeiServices); >> ASSERT_EFI_ERROR (Status); >> >> Status = TimerConstructor (); >> ASSERT_EFI_ERROR (Status); >> >> Status = FpgaInterfaceInit (); >> ASSERT_EFI_ERROR (Status); >> >> } >> >> >> My problem is SerialPortConstructor needs frequency, which can be >> retrieved after FpgaInterfaceInit() Therefore, my preferred way for this >> constructor list will be >> FpgaInterfaceInit() followed by BaseDebugLibSerialPortConstructor() >> >> how I can achieve this. >> >> >> Many Thanks >> Udit >> _______________________________________________ >> edk2-devel mailing list >> [email protected] >> https://lists.01.org/mailman/listinfo/edk2-devel > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

