Andrew,

Good questions.

1) I agree with your observations on the GUIDs associated with the Debug Port.  
The UEFI Specification defines the GUID for the messaging device path and the 
UEFI Variable to be the same value as the Debug Port Protocol Guid.  We could 
remove the 2 GUIDs from the .DEC file with no side effects but I do not like 
that the developer has to know the GUIDs are the same and use the Debug Port 
Protocol GUID in the INF when the device path or UEFI Variable are needed.  I 
think I would prefer to see the following 2 #defines removed:

        #define gEfiDebugPortVariableGuid   gEfiDebugPortProtocolGuid
        #define gEfiDebugPortDevicePathGuid     gEfiDebugPortProtocolGuid

And instead, have a proper declaration of the externs for these 2 GUIDs.  This 
also means the INF files that only list the Debug Port Protocol Guid will have 
to be updated to list all of the Debug Port related guids the module uses or 
the build will break.

2) The GUID values for the SAL services are defined in 
ExtendedSalServiceClasses.h because those are the defines used to make ESAL 
calls.  We never use the &GuidCName when making an ESAL call.  Instead, the 
GUID HI and GUID LO values are used in two 64-bit parameters to pass the GUID 
by value instead of by reference to avoid the physical/virtual issues with 
pointers in ESAL calls Itanium.  Since the &GuidCName form should never be used 
in C code, it did not make sense to declare the GuidCName for these GUIDs in 
the .h file.  This breaks the build if a developer ever attempts to use 
&GuidCName form.

Best regards,

Mike

-----Original Message-----
From: Andrew Fish [mailto:[email protected]] 
Sent: Friday, June 21, 2013 10:41 AM
To: [email protected]
Subject: [edk2] [MdePkg Maintainer] .DEC questions

Mike,

I don't understand why gEfiDebugPortVariableGuid and 
gEfiDebugPortDevicePathGuid are in the .DEC file since they can not exist in 
linked code. If you use these GUIDs in the code you need to add 
gEfiDebugPortProtocolGuid to your INF file to get your code to compile. Adding 
gEfiDebugPortVariableGuid or gEfiDebugPortDevicePathGuid to an INF file does 
nothing?

//
// DEBUGPORT variable definitions...
//
#define EFI_DEBUGPORT_VARIABLE_NAME L"DEBUGPORT"
#define EFI_DEBUGPORT_VARIABLE_GUID EFI_DEBUGPORT_PROTOCOL_GUID
#define gEfiDebugPortVariableGuid   gEfiDebugPortProtocolGuid
//
// DebugPort device path definitions...
//
#define DEVICE_PATH_MESSAGING_DEBUGPORT EFI_DEBUGPORT_PROTOCOL_GUID
#define gEfiDebugPortDevicePathGuid     gEfiDebugPortProtocolGuid

Also the following GUIDs only exist in the .dec and they are not define in 
Include/Protocol/ExtendedSalServiceClasses.h. 
     gEfiExtendedSalBaseIoServicesProtocolGuid 
     gEfiExtendedSalStallServicesProtocolGuid 
     gEfiExtendedSalRtcServicesProtocolGuid 
     gEfiExtendedSalVariableServicesProtocolGuid 
     gEfiExtendedSalMtcServicesProtocolGuid 
     gEfiExtendedSalResetServicesProtocolGuid 
     gEfiExtendedSalStatusCodeServicesProtocolGuid 
     gEfiExtendedSalFvBlockServicesProtocolGuid 
     gEfiExtendedSalMpServicesProtocolGuid 
     gEfiExtendedSalPalServicesProtocolGuid 
     gEfiExtendedSalBaseServicesProtocolGuid 
     gEfiExtendedSalMcaServicesProtocolGuid 
     gEfiExtendedSalPciServicesProtocolGuid 
     gEfiExtendedSalCacheServicesProtocolGuid 
     gEfiExtendedSalMcaLogServicesProtocolGuid 

Is there some reason for this? 


Thanks,

Andrew Fish






------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to