[if gte mso 9]>

[edk2] EFIAPI Calling Convention

Subject: [edk2] EFIAPI Calling Convention

From: Ben Schroeder <bensch@mellanox.com>

To: "edk2-devel@lists.sourceforge.net" <edk2-devel@lists.sourceforge.net>

Date: 2014-03-12 09:17:59



Regarding EFIAPI calling convention, the UEFI 2.3.1 specification writes:

“All public interfaces of a UEFI module must follow the UEFI calling convention. Public interfaces include the image entry point, UEFI event handlers, and protocol member functions. The type EFIAPI is used to indicate conformance to the calling conventions defined in this section. Non public interfaces, such as private functions and static library calls, are not required to follow the UEFI calling conventions and may be optimized by the compiler”


Specifically I am interested in UEFI event handlers.

I have a function that registered with CreateEvent as a timer, and then registered with SetTimer to be polled periodically.
So I understand this function (call it foo()) must have EFIAPI calling convention (because it will be called periodically by the uefi system)

Do functions that are called by foo() also need to be in EFIAPI convention?

Specifically, every function that foo() calls, and all the functions those functions call, and so forth, all need to be EFIAPI convention?