From patchwork Wed Oct 18 16:13:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heinrich Schuchardt X-Patchwork-Id: 827711 X-Patchwork-Delegate: agraf@suse.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3yHHMM4t80z9sBd for ; Thu, 19 Oct 2017 03:19:43 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 3BB71C21E70; Wed, 18 Oct 2017 16:16:47 +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_MSPIKE_H2 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 779F1C21F26; Wed, 18 Oct 2017 16:13:56 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 670B9C21EDD; Wed, 18 Oct 2017 16:13:39 +0000 (UTC) Received: from mout.gmx.net (mout.gmx.net [212.227.15.19]) by lists.denx.de (Postfix) with ESMTPS id D1F65C21EFD for ; Wed, 18 Oct 2017 16:13:34 +0000 (UTC) Received: from workstation4.fritz.box ([94.114.42.150]) by mail.gmx.com (mrgmx001 [212.227.17.184]) with ESMTPSA (Nemesis) id 0MYwVv-1dhuX8206F-00VeKV; Wed, 18 Oct 2017 18:13:33 +0200 From: Heinrich Schuchardt To: Alexander Graf Date: Wed, 18 Oct 2017 18:13:12 +0200 Message-Id: <20171018161320.7231-11-xypron.glpk@gmx.de> X-Mailer: git-send-email 2.14.2 In-Reply-To: <20171018161320.7231-1-xypron.glpk@gmx.de> References: <20171018161320.7231-1-xypron.glpk@gmx.de> X-Provags-ID: V03:K0:q8JVi6RMOr3rWlxN7yy9ic/Y9GcZecS+WF/vm5F+3udf9/zDg0l 1ay60HqhT2HJnwWqdo0Fr+qNHDOarf2PozGcJTJjlFDqFdtQA+24WYgwSMTmOyVsIahuB9Y 88GNd9LBEMSrnyqF+gYG60593ix0r1UrefFRDwBbCY50SVmWh1/8LBhZd8ht629/Nr7PK3K MTYPbtMXWEjAGXoXH0wpA== X-UI-Out-Filterresults: notjunk:1; V01:K0:80449kqhV+U=:8bmPykiD3pxFVxzcvIUe7h b2c33+D4Bo4JB8EoeumON/FmpmDHqbwxIm3t0JX6YOKe+dEWm+E6s86eR4gNmh9y19gPujpgj bigNlC09QrJ7xo8BaWoYlZio1UVpC+zEVSn0XbtNQNwfWbrMrOozeAn+lVkWHJlAcSxwK79+s WfK4cAD22Mh+9kfAXrd1V++QCD/dqmnmb5fOn+anIGXjVjMouKwTk4cWjGwPx4SfAF9NRYFue 10+QmcQ6ak207N68nTuhosrv7gAZLz1gXyDAVHSoidCfHYtOBoJa4XiHV7ZPT+JaKpFRzzhm5 5WtEI8jAJ1V7GGGVV7DfZ52Ypz21CsrsPqYdInmpUlgREHsymOVqYk7E8tDLzECP1wPgmGQcI VLrJNEbtHT5CE3r1/Q4v8g3SgwO37bwBGBvS2cN9XgOLlD+W668d/vqsgbuCHbQidGobP2tEV 8P/rTUcg8q+g+L9Cqgi8ttTf5tlGW/oQgY0DBt0WMsAIOnq1pY/7X40B8i9suGUsJXhRfRIXo iiqOTw25sc9C9zINXIjjzK2jotgDYq9STGhnGEJ+FeUSyRPbJ7aLS0lBwsumBEARFYUmEEZ9o 1LGx1Q+dsllAyRMJ3bp0dAQbV/ohNiBQXQhpsIFywo2JRI7FZ1uU2xZTFdVOy7l1z+4W35Qoq N940rsFIUCV8EhDyoa3+SjsthBSOTdoJ0dYnQp6jtDAxZ0GyQuoBr1EcUsCdiSjuYI8ZM3BhM YcqTeJinkcdlaQCLtVKfR8hyiKb1ev7u6otPoteu59tQlm3p5H+13PfegoK9ct5klIf9oFISg KcJgL5PO29KeIA8Dmyj0f99G2YDOg== Cc: u-boot@lists.denx.de, Heinrich Schuchardt Subject: [U-Boot] [PATCH v4 10/18] efi_selftest: deduplicate code 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" Move duplicate code to the new function efi_st_do_tests. Suggested-by: Alexander Graf Signed-off-by: Heinrich Schuchardt --- v4 new patch --- lib/efi_selftest/efi_selftest.c | 71 ++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/lib/efi_selftest/efi_selftest.c b/lib/efi_selftest/efi_selftest.c index c2c339a7be..73f074d9e1 100644 --- a/lib/efi_selftest/efi_selftest.c +++ b/lib/efi_selftest/efi_selftest.c @@ -9,6 +9,13 @@ #include #include +/* + * Constants for test step bitmap + */ +#define EFI_ST_SETUP 1 +#define EFI_ST_EXECUTE 2 +#define EFI_ST_TEARDOWN 4 + static const struct efi_system_table *systable; static const struct efi_boot_services *boottime; static const struct efi_runtime_services *runtime; @@ -133,6 +140,31 @@ static int teardown(struct efi_unit_test *test, unsigned int *failures) return ret; } +/* + * Execute test steps of one phase. + * + * @phase test phase + * @steps steps to execute + * failures returns EFI_ST_SUCCESS if all test steps succeeded + */ +void efi_st_do_tests(unsigned int phase, unsigned int steps, + unsigned int *failures) +{ + struct efi_unit_test *test; + + for (test = ll_entry_start(struct efi_unit_test, efi_unit_test); + test < ll_entry_end(struct efi_unit_test, efi_unit_test); ++test) { + if (test->phase != phase) + continue; + if (steps & EFI_ST_SETUP) + setup(test, failures); + if (steps & EFI_ST_EXECUTE) + execute(test, failures); + if (steps & EFI_ST_TEARDOWN) + teardown(test, failures); + } +} + /* * Execute selftest of the EFI API * @@ -153,7 +185,6 @@ static int teardown(struct efi_unit_test *test, unsigned int *failures) efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle, struct efi_system_table *systab) { - struct efi_unit_test *test; unsigned int failures = 0; systable = systab; @@ -169,41 +200,23 @@ efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle, ll_entry_count(struct efi_unit_test, efi_unit_test)); /* Execute boottime tests */ - for (test = ll_entry_start(struct efi_unit_test, efi_unit_test); - test < ll_entry_end(struct efi_unit_test, efi_unit_test); ++test) { - if (test->phase == EFI_EXECUTE_BEFORE_BOOTTIME_EXIT) { - setup(test, &failures); - execute(test, &failures); - teardown(test, &failures); - } - } + efi_st_do_tests(EFI_EXECUTE_BEFORE_BOOTTIME_EXIT, + EFI_ST_SETUP | EFI_ST_EXECUTE | EFI_ST_TEARDOWN, + &failures); /* Execute mixed tests */ - for (test = ll_entry_start(struct efi_unit_test, efi_unit_test); - test < ll_entry_end(struct efi_unit_test, efi_unit_test); ++test) { - if (test->phase == EFI_SETUP_BEFORE_BOOTTIME_EXIT) - setup(test, &failures); - } + efi_st_do_tests(EFI_SETUP_BEFORE_BOOTTIME_EXIT, + EFI_ST_SETUP, &failures); efi_st_exit_boot_services(); - for (test = ll_entry_start(struct efi_unit_test, efi_unit_test); - test < ll_entry_end(struct efi_unit_test, efi_unit_test); ++test) { - if (test->phase == EFI_SETUP_BEFORE_BOOTTIME_EXIT) { - execute(test, &failures); - teardown(test, &failures); - } - } + efi_st_do_tests(EFI_SETUP_BEFORE_BOOTTIME_EXIT, + EFI_ST_EXECUTE | EFI_ST_TEARDOWN, &failures); /* Execute runtime tests */ - for (test = ll_entry_start(struct efi_unit_test, efi_unit_test); - test < ll_entry_end(struct efi_unit_test, efi_unit_test); ++test) { - if (test->phase == EFI_SETUP_AFTER_BOOTTIME_EXIT) { - setup(test, &failures); - execute(test, &failures); - teardown(test, &failures); - } - } + efi_st_do_tests(EFI_SETUP_AFTER_BOOTTIME_EXIT, + EFI_ST_SETUP | EFI_ST_EXECUTE | EFI_ST_TEARDOWN, + &failures); /* Give feedback */ efi_st_printf("\nSummary: %u failures\n\n", failures);