Thanks Andrew Fish for answering my questions.

Thanks,
Manish



On Tue, Apr 8, 2014 at 5:59 PM, Andrew Fish <[email protected]> wrote:

>
> The drivers publish their sequence requirement in a [Depex] statement in
> their INF file. When the conditions in the Depex are TRUE the driver is
> dispatched.
>
> UEFI_DRIVER(s) do not have a Depex of TRUE, they have an implicit Depex of
> CoreAllEfiServicesAvailable().  So basically no Depex mean you depend on
> all the UEFI services being available, it is not a Depex of TRUE.
>
> The UEFI drivers generally produce DriverBinding protocol, so all they do
> in their entry point is register this protocol. The BDS then uses platform
> policy to decide what drivers need to be started to boot.
>
> Thanks,
>
> Andrew Fish
>
>
> The dispatcher code lives in the DXE Core:
>
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/Dispatcher/Dispatcher.c
>
> CoreAllEfiServicesAvailable () :
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/Dxe/DxeMain/DxeProtocolNotify.c
>
> EFI_CORE_PROTOCOL_NOTIFY_ENTRY  mArchProtocols[] = {
>   { &gEfiSecurityArchProtocolGuid,         (VOID **)&gSecurity,      NULL, 
> NULL, FALSE },
>   { &gEfiCpuArchProtocolGuid,              (VOID **)&gCpu,           NULL, 
> NULL, FALSE },
>   { &gEfiMetronomeArchProtocolGuid,        (VOID **)&gMetronome,     NULL, 
> NULL, FALSE },
>   { &gEfiTimerArchProtocolGuid,            (VOID **)&gTimer,         NULL, 
> NULL, FALSE },
>   { &gEfiBdsArchProtocolGuid,              (VOID **)&gBds,           NULL, 
> NULL, FALSE },
>   { &gEfiWatchdogTimerArchProtocolGuid,    (VOID **)&gWatchdogTimer, NULL, 
> NULL, FALSE },
>   { &gEfiRuntimeArchProtocolGuid,          (VOID **)&gRuntime,       NULL, 
> NULL, FALSE },
>   { &gEfiVariableArchProtocolGuid,         (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { &gEfiVariableWriteArchProtocolGuid,    (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { &gEfiCapsuleArchProtocolGuid,          (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { &gEfiMonotonicCounterArchProtocolGuid, (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { &gEfiResetArchProtocolGuid,            (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { &gEfiRealTimeClockArchProtocolGuid,    (VOID **)NULL,            NULL, 
> NULL, FALSE },
>   { NULL,                                  (VOID **)NULL,            NULL, 
> NULL, FALSE }
> };
>
> /**
>   Return TRUE if all AP services are availible.
>
>   @retval EFI_SUCCESS    All AP services are available
>   @retval EFI_NOT_FOUND  At least one AP service is not available
>
> **/
> EFI_STATUS
> CoreAllEfiServicesAvailable (
>   VOID
>   )
> {
>   EFI_CORE_PROTOCOL_NOTIFY_ENTRY  *Entry;
>
>   for (Entry = mArchProtocols; Entry->ProtocolGuid != NULL; Entry++) {
>     if (!Entry->Present) {
>       return EFI_NOT_FOUND;
>     }
>   }
>   return EFI_SUCCESS;
> }
>
>
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg/Include/Protocol/DriverBinding.h
>
>
> On Apr 8, 2014, at 5:42 PM, manish mahajan <[email protected]> wrote:
>
> Thanks Laurie. Which file decides the sequence of executing ENTRY_POINT
> functions of DXE drivers? Which file controls the bootup sequence?
>
>
> Thanks,
> Manish
>
>
>
> On Tue, Apr 8, 2014 at 4:10 PM, Jarlstrom, Laurie <
> [email protected]> wrote:
>
>>  You need to also add your new driver to your .fdf platform file.
>>
>>
>>
>> thanks,
>>
>> Laurie
>>
>>
>>
>> [email protected]
>>
>> *EFI / Framework Technical *
>>
>> *Marketing Engineering Team*
>>
>> *(503) 712-9395 <%28503%29%20712-9395>*
>>
>> *From:* manish mahajan [mailto:[email protected]]
>> *Sent:* Tuesday, April 08, 2014 4:01 PM
>> *To:* [email protected]
>> *Subject:* [edk2] Entry point for DXE_DRIVER module
>>
>>
>>
>> Hi All,
>>
>>
>>
>> I have added a new DXE_DRIVER module. I want to make sure that this
>> DXE_DRIVER is getting invoked during boot up process.
>>
>>
>>
>> [Defines]
>>
>>   INF_VERSION                    = 0x00010005
>>
>>   BASE_NAME                      = UefiMainSample
>>
>>   FILE_GUID                      = 7C04A583-9E3E-4f1c-AD65-E05268D0B4D1
>>
>>   MODULE_TYPE                    = DXE_DRIVER
>>
>>   VERSION_STRING                 = 0.1
>>
>>   ENTRY_POINT                    = UefiMain
>>
>>
>>
>> I have added my new .inf file before Bds.inf, so that UefiMain will be
>> called before Bds Module.
>>
>>
>>
>> To make sure that UefiMain function is called during bootup, I added
>> while(1) loop in UefiMain(). But still I can see Boot Options.
>>
>>
>>
>> That means my UefiMain function is not called, since it did not "hang".
>> Please advice me in this case.
>>
>>
>>
>> Thanks,
>> Manish
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Put Bad Developers to Shame
>> Dominate Development with Jenkins Continuous Integration
>> Continuously Automate Build, Test & Deployment
>> Start a new project now. Try Jenkins in the cloud.
>> http://p.sf.net/sfu/13600_Cloudbees
>> _______________________________________________
>> edk2-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>>
>>
>
> ------------------------------------------------------------------------------
> Put Bad Developers to Shame
> Dominate Development with Jenkins Continuous Integration
> Continuously Automate Build, Test & Deployment
> Start a new project now. Try Jenkins in the cloud.
>
> http://p.sf.net/sfu/13600_Cloudbees_______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
>
>
> ------------------------------------------------------------------------------
> Put Bad Developers to Shame
> Dominate Development with Jenkins Continuous Integration
> Continuously Automate Build, Test & Deployment
> Start a new project now. Try Jenkins in the cloud.
> http://p.sf.net/sfu/13600_Cloudbees
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
>
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to