From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=17.171.2.68; helo=ma1-aaemail-dr-lapp02.apple.com; envelope-from=afish@apple.com; receiver=edk2-devel@lists.01.org Received: from ma1-aaemail-dr-lapp02.apple.com (ma1-aaemail-dr-lapp02.apple.com [17.171.2.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 72407211B7F93 for ; Fri, 18 Jan 2019 09:25:00 -0800 (PST) Received: from pps.filterd (ma1-aaemail-dr-lapp02.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp02.apple.com (8.16.0.27/8.16.0.27) with SMTP id x0IHLqec027887; Fri, 18 Jan 2019 09:24:55 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=mime-version : content-transfer-encoding : content-type : sender : subject : from : in-reply-to : date : cc : message-id : references : to; s=20180706; bh=xaKBbDyETYDGMfN/58GbOSI+N4+mxb5IvW9P/Lag9aE=; b=hPWlWYbxr9L5bH2fL7AcY9xkqsjT6kVD9NBp8ilXDHMnJOiN6Huep06tSw8BlUpMkgiZ n983BSQEFkEMHxDlvIiIKXzTI7uXE3KjcH1ceuxu+wbAVsRnplNe5TDcOOL6ADM+S4k8 UipPVJ/bb2FiNqmTyuwLt64KbMeG0Utq1DWKDUpDiDwcLP+SbiYMw+dg4aCEWm0+7l5b YV27SxnOjPex0hB4C15fbH3My8yjYhok9ftaCY9fcWYm5oQhebgS0XXjod76qGi1ZdAB 11PCy7TDesNGzB8HVvaYcikb2/Owwuzg8wlK4Qm4SJG2V/5sNUIGol6lklPfl6Z3a0lE lA== Received: from ma1-mtap-s03.corp.apple.com (ma1-mtap-s03.corp.apple.com [17.40.76.7]) by ma1-aaemail-dr-lapp02.apple.com with ESMTP id 2pydt2n25b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Fri, 18 Jan 2019 09:24:55 -0800 MIME-version: 1.0 Received: from ma1-mmpp-sz10.apple.com (ma1-mmpp-sz10.apple.com [17.171.128.150]) by ma1-mtap-s03.corp.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) with ESMTPS id <0PLJ005TQF1J6VD0@ma1-mtap-s03.corp.apple.com>; Fri, 18 Jan 2019 09:24:55 -0800 (PST) Received: from process_viserion-daemon.ma1-mmpp-sz10.apple.com by ma1-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) id <0PLJ00800ERZNV00@ma1-mmpp-sz10.apple.com>; Fri, 18 Jan 2019 09:24:55 -0800 (PST) X-Va-A: X-Va-T-CD: 72d6207661ea50341670b271e193a674 X-Va-E-CD: 342cf6fca028c928aa9ec40d8313e2d6 X-Va-R-CD: dd8e83747d7798cbaa767a47f53eace0 X-Va-CD: 0 X-Va-ID: 59825b6a-ee7e-40ad-9317-bb507450b019 X-V-A: X-V-T-CD: 72d6207661ea50341670b271e193a674 X-V-E-CD: 342cf6fca028c928aa9ec40d8313e2d6 X-V-R-CD: dd8e83747d7798cbaa767a47f53eace0 X-V-CD: 0 X-V-ID: 2cedf6ea-5db8-467c-b036-58ad8b481b6c Received: from process_milters-daemon.ma1-mmpp-sz10.apple.com by ma1-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) id <0PLJ00200ENXD600@ma1-mmpp-sz10.apple.com>; Fri, 18 Jan 2019 09:24:54 -0800 (PST) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-01-18_10:,, signatures=0 Received: from [17.234.236.240] (unknown [17.234.236.240]) by ma1-mmpp-sz10.apple.com (Oracle Communications Messaging Server 8.0.2.3.20181024 64bit (built Oct 24 2018)) with ESMTPSA id <0PLJ00D9QF1FYZ30@ma1-mmpp-sz10.apple.com>; Fri, 18 Jan 2019 09:24:54 -0800 (PST) Sender: afish@apple.com From: Andrew Fish In-reply-to: <9333E191E0D52B4999CE63A99BA663A00302C573F1@atlms1.us.megatrends.com> Date: Fri, 18 Jan 2019 09:24:24 -0800 Cc: Mike Kinney , "edk2-devel@lists.01.org" Message-id: <6388D0B3-9465-40E6-8CDF-11001D321637@apple.com> References: <37D3156D-0434-4A64-BF0C-9883A4B88838@apple.com> <9333E191E0D52B4999CE63A99BA663A00302C56A66@atlms1.us.megatrends.com> <9333E191E0D52B4999CE63A99BA663A00302C573F1@atlms1.us.megatrends.com> To: Felix Poludov X-Mailer: Apple Mail (2.3445.6.18) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-01-18_10:, , signatures=0 Subject: Re: History question about Base.h and its alternate parallel name space.... Should we change it? X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 18 Jan 2019 17:25:00 -0000 Content-transfer-encoding: 7BIT Content-type: text/plain; CHARSET=US-ASCII > On Jan 18, 2019, at 9:08 AM, Felix Polyudov wrote: > > Mike, > > I think EFI_GUID and EFI_STATUS should cover most of the use cases. > I think I missed a couple in my original mail.... But here are the typedef and #define names that get remapped (or redone) in MdePkg/Include/Uefi/UefiBaseType.h typedef struct { UINT32 Data1; UINT16 Data2; UINT16 Data3; UINT8 Data4[8]; } GUID; typedef struct { UINT8 Addr[4]; } IPv4_ADDRESS; typedef struct { UINT8 Addr[16]; } IPv6_ADDRESS; typedef UINT64 PHYSICAL_ADDRESS; typedef UINTN RETURN_STATUS; #define ENCODE_ERROR(StatusCode) ((RETURN_STATUS)(MAX_BIT | (StatusCode))) #define ENCODE_WARNING(StatusCode) ((RETURN_STATUS)(StatusCode)) #define RETURN_ERROR(StatusCode) (((INTN)(RETURN_STATUS)(StatusCode)) < 0) #define RETURN_SUCCESS 0 #define RETURN_LOAD_ERROR ENCODE_ERROR (1) #define RETURN_INVALID_PARAMETER ENCODE_ERROR (2) .... I think the cleanup would be as simple as moving things from MdePkg/Include/Uefi/UefiBaseType.h to MdePkg/Include/Base.h. So: typedef struct { UINT32 Data1; UINT16 Data2; UINT16 Data3; UINT8 Data4[8]; } GUID; Becomes: typedef struct { UINT32 Data1; UINT16 Data2; UINT16 Data3; UINT8 Data4[8]; } GUID, EFI_GUID; Thanks, Andrew Fish > -----Original Message----- > From: Kinney, Michael D [mailto:michael.d.kinney@intel.com] > Sent: Thursday, January 17, 2019 3:04 PM > To: Felix Polyudov; 'Andrew Fish'; Kinney, Michael D > Cc: edk2-devel@lists.01.org > Subject: RE: [edk2] History question about Base.h and its alternate parallel name space.... Should we change it? > > Felix, > > Is there a specific set that would have the most benefit? > > Is EFI_GUID sufficient? > > Mike > >> -----Original Message----- >> From: Felix Polyudov [mailto:Felixp@ami.com] >> Sent: Wednesday, January 16, 2019 3:10 PM >> To: 'Andrew Fish' ; Kinney, Michael D >> >> Cc: edk2-devel@lists.01.org >> Subject: RE: [edk2] History question about Base.h and >> its alternate parallel name space.... Should we change >> it? >> >> I agree with Andrew. >> In my opinion, moving alias types to Base.h will help to >> overcome certain practical inconveniences without >> a significant impact on the ability to detect poorly >> written Base libraries. >> >> -----Original Message----- >> From: edk2-devel [mailto:edk2-devel- >> bounces@lists.01.org] On Behalf Of Andrew Fish via edk2- >> devel >> Sent: Wednesday, January 16, 2019 5:18 PM >> To: Mike Kinney >> Cc: edk2-devel@lists.01.org >> Subject: Re: [edk2] History question about Base.h and >> its alternate parallel name space.... Should we change >> it? >> >> >> >>> On Jan 16, 2019, at 1:19 PM, Kinney, Michael D >> wrote: >>> >>> Hi Andrew, >>> >>> I though the reason was a bit more technical. We have >> a >>> MODULE_TYPE of BASE. Library instances that use the >> BASE >>> MODULE_TYPE are declaring that the library interfaces >> are >>> safe to be linked against a module of any other type >> (SEC, >>> PEI, DXE, SMM, DXE_RUNTIME, UEFI_DRIVER, UEFI_APP). >>> >>> We needed to make sure that a lib of type BASE that >>> includes Base.h as its top level include file only has >>> visibility to the types that are safe for all the >> other >>> module types. It is up to the top level include files >>> for these other module types to provide the gasket to >>> the types in Base.h. >>> >>> If we add aliases in Base.h, then we may not get build >>> breaks when a lib of type BASE includes files that are >>> not compatible with BASE. >>> >> >> Mike, >> >> I don't think having aliases for return types really >> helps Base code quality as RETURN_SUCCESS is almost >> always just a comment in a header file, and only exists >> in a .c file. Thus RETURN_* seem like a needless >> duplication, best case it is a comment that the code is >> Base. >> >> I will agree that not having EFI_GUID defined does case >> all the PPI and Protocol files to blow up if you try to >> include them. The failure case I was helping explain was >> some one trying to include a PPI, that included a >> Protocol that contained a data structure that was >> needed. But I would posit that the definition of a >> (EFI_)GUID is state agnostic. Having access to a PPI or >> Protocol definition does not break Base code, what >> breaks Base code is trying to access some service that >> does not exist. To get more that EFI_GUID you are going >> to need to include Uefi.h, PiPei.h, PiDxe.h, etc. and >> that will block doing anything that is not Base. >> >> So I'm asking if redefining the name for EFI_GUID to >> GUID for Base is really that helpful? >> >> Thanks, >> >> Andrew Fish >> >> >>> Thanks, >>> >>> Mike >>> >>>> -----Original Message----- >>>> From: edk2-devel [mailto:edk2-devel- >>>> bounces@lists.01.org] On Behalf Of Andrew Fish via >> edk2- >>>> devel >>>> Sent: Wednesday, January 16, 2019 1:00 PM >>>> To: edk2-devel >>>> Subject: [edk2] History question about Base.h and its >>>> alternate parallel name space.... Should we change >> it? >>>> >>>> I had some one ask me recently why EFI_GUID does not >>>> work with #include . I explained they needed >> to >>>> use GUID vs. EFI_GUID. That prompted the question of >> why >>>> we have 2 names for the same thing..... Well the >>>> historical answer was kind of political as some team >>>> wanted to use edk2, but not implement EFI. Thus we >> have >>>> EFI types without the EFI_ prefix in Base.h. >>>> >>>> So all this got me thinking.... Maybe it makes sense >> to >>>> move some of the renaming from >>>> MdePkg/Include/Uefi/UefiBaseType.h to Base.h? >> Removing >>>> the Base.h duplicate types would potentially hit lots >> of >>>> code [1] and break merges with other code bases >> (break >>>> other peoples Base libs etc.). >>>> >>>> These lines in MdePkg/Include/Uefi/UefiBaseType.h >> would >>>> get moved to MdePkg/Include/Base.h: >>>> typedef GUID EFI_GUID; >>>> typedef RETURN_STATUS EFI_STATUS; >>>> #define EFIERR(_a) ENCODE_ERROR(_a) >>>> #define EFI_ERROR(A) RETURN_ERROR(A) >>>> >>>> #define EFI_SUCCESS RETURN_SUCCESS >>>> #define EFI_LOAD_ERROR RETURN_LOAD_ERROR >>>> #define EFI_INVALID_PARAMETER >>>> RETURN_INVALID_PARAMETER >>>> #define EFI_UNSUPPORTED RETURN_UNSUPPORTED >>>> #define EFI_BAD_BUFFER_SIZE >> RETURN_BAD_BUFFER_SIZE >>>> #define EFI_BUFFER_TOO_SMALL >>>> RETURN_BUFFER_TOO_SMALL >>>> #define EFI_NOT_READY RETURN_NOT_READY >>>> #define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR >>>> #define EFI_WRITE_PROTECTED >> RETURN_WRITE_PROTECTED >>>> #define EFI_OUT_OF_RESOURCES >>>> RETURN_OUT_OF_RESOURCES >>>> #define EFI_VOLUME_CORRUPTED >>>> RETURN_VOLUME_CORRUPTED >>>> #define EFI_VOLUME_FULL RETURN_VOLUME_FULL >>>> #define EFI_NO_MEDIA RETURN_NO_MEDIA >>>> #define EFI_MEDIA_CHANGED >> RETURN_MEDIA_CHANGED >>>> #define EFI_NOT_FOUND RETURN_NOT_FOUND >>>> #define EFI_ACCESS_DENIED >> RETURN_ACCESS_DENIED >>>> #define EFI_NO_RESPONSE RETURN_NO_RESPONSE >>>> #define EFI_NO_MAPPING RETURN_NO_MAPPING >>>> #define EFI_TIMEOUT RETURN_TIMEOUT >>>> #define EFI_NOT_STARTED RETURN_NOT_STARTED >>>> #define EFI_ALREADY_STARTED >> RETURN_ALREADY_STARTED >>>> #define EFI_ABORTED RETURN_ABORTED >>>> #define EFI_ICMP_ERROR RETURN_ICMP_ERROR >>>> #define EFI_TFTP_ERROR RETURN_TFTP_ERROR >>>> #define EFI_PROTOCOL_ERROR >> RETURN_PROTOCOL_ERROR >>>> #define EFI_INCOMPATIBLE_VERSION >>>> RETURN_INCOMPATIBLE_VERSION >>>> #define EFI_SECURITY_VIOLATION >>>> RETURN_SECURITY_VIOLATION >>>> #define EFI_CRC_ERROR RETURN_CRC_ERROR >>>> #define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA >>>> #define EFI_END_OF_FILE RETURN_END_OF_FILE >>>> #define EFI_INVALID_LANGUAGE >>>> RETURN_INVALID_LANGUAGE >>>> #define EFI_COMPROMISED_DATA >>>> RETURN_COMPROMISED_DATA >>>> #define EFI_HTTP_ERROR RETURN_HTTP_ERROR >>>> >>>> #define EFI_WARN_UNKNOWN_GLYPH >>>> RETURN_WARN_UNKNOWN_GLYPH >>>> #define EFI_WARN_DELETE_FAILURE >>>> RETURN_WARN_DELETE_FAILURE >>>> #define EFI_WARN_WRITE_FAILURE >>>> RETURN_WARN_WRITE_FAILURE >>>> #define EFI_WARN_BUFFER_TOO_SMALL >>>> RETURN_WARN_BUFFER_TOO_SMALL >>>> #define EFI_WARN_STALE_DATA >> RETURN_WARN_STALE_DATA >>>> #define EFI_WARN_FILE_SYSTEM >>>> RETURN_WARN_FILE_SYSTEM >>>> >>>> I'm interested what folks think about a change like >>>> this? This change makes the alternate names optional. >>>> >>>> I guess we could also leave the old Base.h >> definitions >>>> in Base.h and cleanup the code to only use the EFI >> form, >>>> but that is a much bigger change? >>>> >>>> [1] RETURN_SUCCSS usage: git grep -w RETURN_SUCCESS >>>> >>>> Thanks, >>>> >>>> Andrew Fish >>>> >>>> _______________________________________________ >>>> edk2-devel mailing list >>>> edk2-devel@lists.01.org >>>> https://lists.01.org/mailman/listinfo/edk2-devel >> >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> >> Please consider the environment before printing this >> email. >> >> The information contained in this message may be >> confidential and proprietary to American Megatrends, >> Inc. This communication is intended to be read only by >> the individual or entity to whom it is addressed or by >> their designee. If the reader of this message is not the >> intended recipient, you are on notice that any >> distribution of this message, in any form, is strictly >> prohibited. Please promptly notify the sender by reply >> e-mail or by telephone at 770-246-8600, and then delete >> or destroy all copies of the transmission. > > Please consider the environment before printing this email. > > The information contained in this message may be confidential and proprietary to American Megatrends, Inc. This communication is intended to be read only by the individual or entity to whom it is addressed or by their designee. If the reader of this message is not the intended recipient, you are on notice that any distribution of this message, in any form, is strictly prohibited. Please promptly notify the sender by reply e-mail or by telephone at 770-246-8600, and then delete or destroy all copies of the transmission.