Sunny,
Your bitmask idea works. But I think it might introduce unnecessary complexity. 
Keeping current implementation is good enough I think.

Thanks,
Ray

-----Original Message-----
From: Wang, Sunny (HPS SW) [mailto:sunnyw...@hpe.com] 
Sent: Tuesday, October 13, 2015 12:15 PM
To: Ni, Ruiyu <ruiyu...@intel.com>; Laszlo Ersek <ler...@redhat.com>
Cc: edk2-devel@lists.01.org <edk2-de...@ml01.01.org>; Wang, Sunny (HPS SW) 
<sunnyw...@hpe.com>
Subject: RE: [edk2] [PATCH] MdeModulePkg: Make the BmFindLoadOption function 
public

Laszlo,
        Would you like to make GetLoadOptionBuffer() public as well with my 
next patch?  I can help to do the passing change and add you into Signed-off-by 
as well. If you need it, let me know by end of today.  
Ruiyu,
        OK, got it. I will update the patch and send it out. 
        I just get an idea from your reply for enhancing the 
EfiBootManagerFindLoadOption, we may add a input parameter called IgnoreMember 
like the following for all the use cases so that all the consumers of this API 
don't need to create their own version. What do you think? If it works, I will 
send the other patch for this. 

typedef enum {
  IgnoreOptionType           = 0x01,        // BIT0
  IgnoreAttributes              = 0x02,        // BIT1
  IgnoreDescription           = 0x04,         // BIT2
  IgnoreFilePath                  = 0x08,         // BIT3
  IgnoreOptionalData        = 0x10,         // BIT4
  IgnoreOptionalDataSize = 0x20         // BIT5
} IGNORE_MEMBER_OF_ LOAD_OPTION;

EfiBootManagerFindLoadOption (
  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Key,
  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Array,
  IN UINTN                                                                      
  Count,
  IN IGNORE_MEMBER_OF_ LOAD_OPTION             IgnoreMember
  )

Regards,
Sunny Wang

-----Original Message-----
From: Ni, Ruiyu [mailto:ruiyu...@intel.com] 
Sent: Tuesday, October 13, 2015 10:35 AM
To: Laszlo Ersek; Wang, Sunny (HPS SW)
Cc: edk2-devel@lists.01.org
Subject: RE: [edk2] [PATCH] MdeModulePkg: Make the BmFindLoadOption function 
public
Importance: High

Sunny,
Yes it's acceptable. Currently the implementation of *FindLoadOption does an 
exactly match. If other consumers of this API need to just match partially, 
they need to provide their own version instead of using this exposed one.

Laszlo,
Sorry I missed your comments. I am thinking about whether exposing the 
*GetLoadOptionBuffer() breaks the orthogonality because we already have 
EfiBootManagerProcessLoadOption() API. The latter one not only loads the buffer 
but also treats the buffer as a PECOFF buffer to start it.
The *GetLoadOptionBuffer() seems to do part of the job.
Anyway I think your request also makes sense. Just want to know if there is 
other better idea to not break the orthogonality.

Thanks,
Ray

-----Original Message-----
From: Laszlo Ersek [mailto:ler...@redhat.com]
Sent: Monday, October 12, 2015 8:11 PM
To: Wang, Sunny (HPS SW) <sunnyw...@hpe.com>; Ni, Ruiyu <ruiyu...@intel.com>
Cc: edk2-devel@lists.01.org <edk2-de...@ml01.01.org>
Subject: Re: [edk2] [PATCH] MdeModulePkg: Make the BmFindLoadOption function 
public

On 10/12/15 09:45, Wang, Sunny (HPS SW) wrote:
> Hi Ruiyu,
> 
> Thanks for the quick response.        
> It is because of that we need to do same thing as what 
> BmFindLoadOption function did in our PlatformBootManagerLib to 
> check/find specific boot option from the boot options array which is 
> got from EfiBootManagerGetLoadOptions function. I also think other 
> developers may have the same need.  Therefore, it would be better to 
> make BmFindLoadOption public to reduce the maintenance effort caused 
> by duplicating the function into other BDS libraries like 
> PlatformBootManagerLib. Is it reasonable and acceptable?  If so, I 
> will rename the BmFindLoadOption function to 
> EfiBootManagerFindLoadOption and resend the patch.

On a similar note: in the message

http://thread.gmane.org/gmane.comp.bios.edk2.devel/759/focus=1153

point (10), I requested that the function BmGetLoadOptionBuffer() be made 
public.

Looks like there are now at least two Bm*() functions that see outside demand! 
:)

Thanks
Laszlo

> 
> Regards,
> Sunny Wang
> 
> -----Original Message-----
> From: Ni, Ruiyu [mailto:ruiyu...@intel.com]
> Sent: Monday, October 12, 2015 3:29 PM
> To: Wang, Sunny (HPS SW); edk2-devel@lists.01.org
> Subject: RE: [edk2] [PATCH] MdeModulePkg: Make the BmFindLoadOption 
> function public
> Importance: High
> 
> Sunny,
> Why do you want to expose this function?
> Bm* needs to change to EfiBootManager* if it's public.
> 
> Thanks,
> Ray
> 
> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of 
> Sunny Wang
> Sent: Monday, October 12, 2015 3:15 PM
> To: edk2-devel@lists.01.org
> Subject: [edk2] [PATCH] MdeModulePkg: Make the BmFindLoadOption 
> function public
> 
> Make the BmFindLoadOption function public
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> 
> Signed-off-by: Sunny Wang <sunnyw...@hpe.com>
> ---
>  MdeModulePkg/Include/Library/UefiBootManagerLib.h | 21 
> +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/MdeModulePkg/Include/Library/UefiBootManagerLib.h 
> b/MdeModulePkg/Include/Library/UefiBootManagerLib.h
> index 5538d90..e86b589 100644
> --- a/MdeModulePkg/Include/Library/UefiBootManagerLib.h
> +++ b/MdeModulePkg/Include/Library/UefiBootManagerLib.h
> @@ -2,6 +2,7 @@
>    Provide Boot Manager related library APIs.
>  
>  Copyright (c) 2011 - 2015, Intel Corporation. All rights 
> reserved.<BR>
> +(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>
>  This program and the accompanying materials  are licensed and made available 
> under the terms and conditions of the BSD License  which accompanies this 
> distribution.  The full text of the license may be found at @@ -222,6 +223,26 
> @@ EfiBootManagerSortLoadOptionVariable (
>    IN SORT_COMPARE                      CompareFunction
>    );
>  
> +/**
> +  Return the index of the load option in the load option array.
> +
> +  The function consider two load options are equal when the 
> + OptionType, Attributes, Description, FilePath and OptionalData are equal.
> +
> +  @param Key    Pointer to the load option to be found.
> +  @param Array  Pointer to the array of load options to be found.
> +  @param Count  Number of entries in the Array.
> +
> +  @retval -1          Key wasn't found in the Array.
> +  @retval 0 ~ Count-1 The index of the Key in the Array.
> +**/
> +INTN
> +BmFindLoadOption (
> +  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Key,
> +  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Array,
> +  IN UINTN                              Count
> +  );
> +
>  //
>  // Boot Manager hot key library functions.
>  //
> --
> 2.5.0.windows.1
> 
> _______________________________________________
> 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
> 


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to