[U-Boot] [PATCH 2/9] efi_selftest: test protocol management
Simon Glass
sjg at chromium.org
Mon Nov 6 16:58:06 UTC 2017
Hi Heinrich,
On 22 October 2017 at 06:45, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
> This unit test checks the following protocol services:
> InstallProtocolInterface, UninstallProtocolInterface,
> InstallMultipleProtocolsInterfaces,
> UninstallMultipleProtocolsInterfaces,
> HandleProtocol, ProtocolsPerHandle,
> LocateHandle, LocateHandleBuffer.
>
> As UninstallProtocolInterface and UninstallMultipleProtocolsInterfaces
> are not completely implemented a TODO message will shown for
> their failure.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> include/efi_selftest.h | 9 +
> lib/efi_selftest/Makefile | 3 +
> lib/efi_selftest/efi_selftest_manageprotocols.c | 381 ++++++++++++++++++++++++
> 3 files changed, 393 insertions(+)
> create mode 100644 lib/efi_selftest/efi_selftest_manageprotocols.c
>
Reviewed-by: Simon Glass <sjg at chromium.org>
nits below
> diff --git a/include/efi_selftest.h b/include/efi_selftest.h
> index 5cc8d4f600..be5ba4bfa9 100644
> --- a/include/efi_selftest.h
> +++ b/include/efi_selftest.h
> @@ -27,6 +27,15 @@
> (efi_st_printf("%s(%u):\nERROR: ", __FILE__, __LINE__), \
> efi_st_printf(__VA_ARGS__)) \
>
> +/*
> + * Prints a TODO message.
Why is this called a TODO message rather than an error?
> + *
> + * @... format string followed by fields to print
> + */
> +#define efi_st_todo(...) \
> + (efi_st_printf("%s(%u):\nTODO: ", __FILE__, __LINE__), \
> + efi_st_printf(__VA_ARGS__)) \
> +
> /*
> * A test may be setup and executed at boottime,
> * it may be setup at boottime and executed at runtime,
> diff --git a/lib/efi_selftest/Makefile b/lib/efi_selftest/Makefile
> index 88b998bd4c..acd184db4b 100644
> --- a/lib/efi_selftest/Makefile
> +++ b/lib/efi_selftest/Makefile
> @@ -15,6 +15,8 @@ CFLAGS_efi_selftest_events.o := $(CFLAGS_EFI)
> CFLAGS_REMOVE_efi_selftest_events.o := $(CFLAGS_NON_EFI)
> CFLAGS_efi_selftest_exitbootservices.o := $(CFLAGS_EFI)
> CFLAGS_REMOVE_efi_selftest_exitbootservices.o := $(CFLAGS_NON_EFI)
> +CFLAGS_efi_selftest_manageprotocols.o := $(CFLAGS_EFI)
> +CFLAGS_REMOVE_efi_selftest_manageprotocols.o := $(CFLAGS_NON_EFI)
> CFLAGS_efi_selftest_snp.o := $(CFLAGS_EFI)
> CFLAGS_REMOVE_efi_selftest_snp.o := $(CFLAGS_NON_EFI)
> CFLAGS_efi_selftest_textoutput.o := $(CFLAGS_EFI)
> @@ -31,6 +33,7 @@ efi_selftest.o \
> efi_selftest_console.o \
> efi_selftest_events.o \
> efi_selftest_exitbootservices.o \
> +efi_selftest_manageprotocols.o \
> efi_selftest_snp.o \
> efi_selftest_textoutput.o \
> efi_selftest_tpl.o \
> diff --git a/lib/efi_selftest/efi_selftest_manageprotocols.c b/lib/efi_selftest/efi_selftest_manageprotocols.c
> new file mode 100644
> index 0000000000..0a297f79ba
> --- /dev/null
> +++ b/lib/efi_selftest/efi_selftest_manageprotocols.c
> @@ -0,0 +1,381 @@
> +/*
> + * efi_selftest_manageprotocols
> + *
> + * Copyright (c) 2017 Heinrich Schuchardt <xypron.glpk at gmx.de>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + *
> + * This unit test checks the following protocol services:
> + * InstallProtocolInterface, UninstallProtocolInterface,
> + * InstallMultipleProtocolsInterfaces, UninstallMultipleProtocolsInterfaces,
> + * HandleProtocol, ProtocolsPerHandle,
> + * LocateHandle, LocateHandleBuffer.
> + */
> +
> +#include <efi_selftest.h>
> +
> +static struct efi_boot_services *boottime;
> +
> +static efi_handle_t handle1;
> +static efi_handle_t handle2;
> +
> +struct interface {
> + void (EFIAPI * inc)(void);
> +};
> +
> +static efi_guid_t guid1 =
> + EFI_GUID(0x2e7ca819, 0x21d3, 0x0a3a,
> + 0xf7, 0x91, 0x82, 0x1f, 0x7a, 0x83, 0x67, 0xaf);
> +static unsigned int counter1;
blank line before function
> +void EFIAPI inc1(void)
> +{
> + ++counter1;
This is just checking that the function is called, right? I suggest
adding a comment explaining that you are incrementing so the test can
detect success.
> +}
> +
> +static struct interface interface1 = {
> + inc1,
> +};
> +
> +static struct interface interface4 = {
> + inc1,
> +};
> +
> +static efi_guid_t guid2 =
> + EFI_GUID(0xf909f2bb, 0x90a8, 0x0d77,
> + 0x94, 0x0c, 0x3e, 0xa8, 0xea, 0x38, 0xd6, 0x6f);
blank line here
> +static unsigned int counter2;
> +void EFIAPI inc2(void)
> +{
> + ++counter2;
> +}
> +
> +static struct interface interface2 = {
> + inc2,
> +};
> +
> +static efi_guid_t guid3 =
> + EFI_GUID(0x06d641a3, 0xf4e7, 0xe0c9,
> + 0xe7, 0x8d, 0x41, 0x2d, 0x72, 0xa6, 0xb1, 0x24);
> +static unsigned int counter3;
blank line here
> +void EFIAPI inc3(void)
> +{
> + ++counter3;
> +}
> +
> +static struct interface interface3 = {
> + inc3,
> +};
> +
> +/*
> + * Find a handle in an array.
> + *
> + * @handle: handle to find
> + * @count: number of entries in the array
> + * @buffer: array to search
@return
Please check in rest of file too.
More information about the U-Boot
mailing list