From patchwork Wed Jul 5 16:18:54 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 784723 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3x2mPt4CW5z9s71 for ; Thu, 6 Jul 2017 02:23:14 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 6680BC21EBE; Wed, 5 Jul 2017 16:22:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id DC2F8C21F0E; Wed, 5 Jul 2017 16:20:33 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 43F36C21EFB; Wed, 5 Jul 2017 16:20:27 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lists.denx.de (Postfix) with ESMTPS id 48D99C21E4C for ; Wed, 5 Jul 2017 16:20:21 +0000 (UTC) Received: from workstation4.fritz.box ([88.152.145.149]) by mail.gmx.com (mrgmx003 [212.227.17.184]) with ESMTPSA (Nemesis) id 0M1W5x-1di7x70SM5-00tUkZ; Wed, 05 Jul 2017 18:19:32 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Wed, 5 Jul 2017 18:18:54 +0200 Message-Id: <20170705161855.20124-9-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170705161855.20124-1-xypron.glpk@gmx.de> References: <20170705161855.20124-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:aH7x0VmK+NIGjGzbneK3Hj5wipx4cPHaxelanKq+lbf0Hszjkcb dK6SXppNIp+e4PjUpQsZdLg3MnDUQ13HOhGg51JPkmss9n2qKcDlvOwNKiIrFDiaGTr7JZ/ 92dKP5DDvhtGxz/w8pPePv0P53siB+3P0kHHNGm/6XTengMwRk7pRBPjWd4KLoLN0g48yHW a7FQ05r1hoE4OwO3/oiqQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:KiFkyDbr+vU=:XhaofqDZXqaBG/kcYjmt3+ rBVdZo0e/KaeCfH43z5Z+Ne5nNOf9LtM2NIFtKkQuJZt2gy6JMaptnBX4q3etDsblbyopf93Q cBZtTCHOCNkyOGgKy229tm6EHCs+Ity7yvAUK+BuUDjRM1wFa2PZhtDDVfMJ681bjZM11QD/H M3DgUAGvU5Y49UNu9THsjesrFnGnh1abNMRz+JI8oePE8dV2ceNPw/9ftaDSmvqfLCnzOLIwY wCvGCiQZE3X1r0E+6cqSmc59dC3mDfrwGPJr2NQv5Uz0KW9/t6SMXbuUpHR3d2xk5TfDxL/zT HTbr+3/NDyENPjSJ+kqJycWpNOwMLekBi3UnEtevit2Wr3NLGWjMXKrh8P0xDSgHQu3STTATq g7T0K8YR5tUDc0MEsjDhrLUM3jqFbPzGDP7GzduBnngjfzmsbO8gzORXMREIbVW/q3nmjB0a0 gMQqRN+/VTM0z/2acuOmQcFUQQOrOM1NPz/2b8CvEllJ6DEyNN08F1hEUawuqzqJTagcMsOkG bkNcR7DbBig0u1R5QcGctXNPSfFh1yIupDuH/xJR6MlHKUPDvTnDaucIJgTh3rruFDGJkKvPQ 8hLvk99HmjfskNR4tAOdiPWF/qRfidEB1Wu6QuPdtKLgY/I5TcCSaEAbM289ZFMq6lBqoOsGU LsMgK0FjxJOiRWxhHtbSujjQqqnkKGlzpXfA8kzvt3/lTs1q2qNKSBzzeLilYOv3LhGD/pseO ZoB1s9pPHPTtD9L6rErqUt/55ho9HbrpHyeag+/yplEUR7SA1mpBs2GQqa8= Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH 8/9] efi_loader: refactor efi_locate_handle X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" To implement LocateHandleBuffer we need to call efi_locate_handle internally without running through EFI_EXIT. So put EFI_ENTRY and EFI_EXIT into a new wrapper function efi_locate_handle_ext. Signed-off-by: Heinrich Schuchardt --- lib/efi_loader/efi_boottime.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index 74b9620ad8..888207681c 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -461,9 +461,6 @@ static efi_status_t EFIAPI efi_locate_handle( struct list_head *lhandle; unsigned long size = 0; - EFI_ENTRY("%d, %p, %p, %p, %p", search_type, protocol, search_key, - buffer_size, buffer); - /* Count how much space we need */ list_for_each(lhandle, &efi_obj_list) { struct efi_object *efiobj; @@ -475,7 +472,7 @@ static efi_status_t EFIAPI efi_locate_handle( if (*buffer_size < size) { *buffer_size = size; - return EFI_EXIT(EFI_BUFFER_TOO_SMALL); + return EFI_BUFFER_TOO_SMALL; } /* Then fill the array */ @@ -488,7 +485,19 @@ static efi_status_t EFIAPI efi_locate_handle( } *buffer_size = size; - return EFI_EXIT(EFI_SUCCESS); + return EFI_SUCCESS; +} + +static efi_status_t EFIAPI efi_locate_handle_ext( + enum efi_locate_search_type search_type, + efi_guid_t *protocol, void *search_key, + unsigned long *buffer_size, efi_handle_t *buffer) +{ + EFI_ENTRY("%d, %p, %p, %p, %p", search_type, protocol, search_key, + buffer_size, buffer); + + return EFI_EXIT(efi_locate_handle(search_type, protocol, search_key, + buffer_size, buffer)); } static efi_status_t EFIAPI efi_locate_device_path(efi_guid_t *protocol, @@ -948,7 +957,7 @@ static const struct efi_boot_services efi_boot_services = { .handle_protocol = efi_handle_protocol, .reserved = NULL, .register_protocol_notify = efi_register_protocol_notify, - .locate_handle = efi_locate_handle, + .locate_handle = efi_locate_handle_ext, .locate_device_path = efi_locate_device_path, .install_configuration_table = efi_install_configuration_table_ext, .load_image = efi_load_image,