X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fefi_selftest.h;h=eaee188de7ef60db32784f3f3d7a9fbe26fac95d;hb=1b846fc24d80ceb358312b4aa3e8242d36784fe4;hp=2f0992f06eee65ed62fea3d1b2c2c33cfaab0d46;hpb=9820c2f30c028f40d22fdc892799fd7088f23bc7;p=oweals%2Fu-boot.git diff --git a/include/efi_selftest.h b/include/efi_selftest.h index 2f0992f06e..eaee188de7 100644 --- a/include/efi_selftest.h +++ b/include/efi_selftest.h @@ -1,9 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * EFI application loader * * Copyright (c) 2017 Heinrich Schuchardt - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef _EFI_SELFTEST_H @@ -12,10 +11,17 @@ #include #include #include +#include #include #define EFI_ST_SUCCESS 0 #define EFI_ST_FAILURE 1 +#define EFI_ST_SUCCESS_STR L"SUCCESS" +/* + * Prints a message. + */ +#define efi_st_printf(...) \ + (efi_st_printc(-1, __VA_ARGS__)) /* * Prints an error message. @@ -23,8 +29,17 @@ * @... format string followed by fields to print */ #define efi_st_error(...) \ - (efi_st_printf("%s(%u):\nERROR: ", __FILE__, __LINE__), \ - efi_st_printf(__VA_ARGS__)) \ + (efi_st_printc(EFI_LIGHTRED, "%s(%u):\nERROR: ", __FILE__, __LINE__), \ + efi_st_printc(EFI_LIGHTRED, __VA_ARGS__)) + +/* + * Prints a TODO message. + * + * @... format string followed by fields to print + */ +#define efi_st_todo(...) \ + (efi_st_printc(EFI_YELLOW, "%s(%u):\nTODO: ", __FILE__, __LINE__), \ + efi_st_printc(EFI_YELLOW, __VA_ARGS__)) \ /* * A test may be setup and executed at boottime, @@ -38,7 +53,7 @@ enum efi_test_phase { }; extern struct efi_simple_text_output_protocol *con_out; -extern struct efi_simple_input_interface *con_in; +extern struct efi_simple_text_input_protocol *con_in; /* * Exit the boot services. @@ -51,14 +66,40 @@ extern struct efi_simple_input_interface *con_in; void efi_st_exit_boot_services(void); /* - * Print a pointer to an u16 string + * Print a colored message + * + * @color color, see constants in efi_api.h, use -1 for no color + * @fmt printf format + * @... arguments to be printed + * on return position of terminating zero word + */ +void efi_st_printc(int color, const char *fmt, ...) + __attribute__ ((format (__printf__, 2, 3))); + +/** + * efi_st_translate_char() - translate a unicode character to a string + * + * @code: unicode character + * Return: string + */ +u16 *efi_st_translate_char(u16 code); + +/** + * efi_st_translate_code() - translate a scan code to a human readable string + * + * @code: unicode character + * Return: string + */ +u16 *efi_st_translate_code(u16 code); + +/* + * Compare an u16 string to a char string. * - * @pointer: pointer - * @buf: pointer to buffer address - * on return position of terminating zero word + * @buf1: u16 string + * @buf2: char string + * @return: 0 if both buffers contain the same bytes */ -void efi_st_printf(const char *fmt, ...) - __attribute__ ((format (__printf__, 1, 2))); +int efi_st_strcmp_16_8(const u16 *buf1, const char *buf2); /* * Reads an Unicode character from the input device. @@ -77,6 +118,7 @@ u16 efi_st_get_key(void); * @setup: set up the unit test * @teardown: tear down the unit test * @execute: execute the unit test + * @on_request: test is only executed on request */ struct efi_unit_test { const char *name; @@ -85,6 +127,7 @@ struct efi_unit_test { const struct efi_system_table *systable); int (*execute)(void); int (*teardown)(void); + bool on_request; }; /* Declare a new EFI unit test */