
On 03.09.18 23:24, Heinrich Schuchardt wrote:
On 09/03/2018 11:09 PM, Alexander Graf wrote:
On 03.09.18 18:35, Heinrich Schuchardt wrote:
The patch implements the EFI_UNICODE_COLLATION_PROTOCOL.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
v3: no change v2: add more comments
MAINTAINERS | 2 + include/cp1250.h | 40 +++ include/cp437.h | 40 +++ include/efi_api.h | 21 ++ include/efi_loader.h | 5 + lib/efi_loader/Makefile | 18 +- lib/efi_loader/efi_boottime.c | 6 + lib/efi_loader/efi_unicode_collation.c | 329 +++++++++++++++++++++++++ 8 files changed, 457 insertions(+), 4 deletions(-) create mode 100644 include/cp1250.h create mode 100644 include/cp437.h create mode 100644 lib/efi_loader/efi_unicode_collation.c
[...]
@@ -127,6 +130,8 @@ extern const efi_guid_t efi_file_info_guid; /* GUID for file system information */ extern const efi_guid_t efi_file_system_info_guid; extern const efi_guid_t efi_guid_device_path_utilities_protocol; +/* GUID of the Unicode collation protocol */ +extern const efi_guid_t efi_guid_unicode_collation_protocol;
extern unsigned int __efi_runtime_start, __efi_runtime_stop; extern unsigned int __efi_runtime_rel_start, __efi_runtime_rel_stop; diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile index 1ffbf52a89..0769df20f7 100644 --- a/lib/efi_loader/Makefile +++ b/lib/efi_loader/Makefile @@ -17,10 +17,20 @@ always += helloworld.efi endif
obj-$(CONFIG_CMD_BOOTEFI_HELLO) += helloworld_efi.o -obj-y += efi_image_loader.o efi_boottime.o efi_runtime.o efi_console.o -obj-y += efi_memory.o efi_device_path_to_text.o efi_device_path.o -obj-y += efi_device_path_utilities.o efi_file.o efi_variable.o efi_bootmgr.o -obj-y += efi_watchdog.o +obj-y += \ +efi_bootmgr.o \ +efi_boottime.o \ +efi_console.o \ +efi_device_path.o \ +efi_device_path_to_text.o \ +efi_device_path_utilities.o \ +efi_file.o \ +efi_image_loader.o \ +efi_memory.o \ +efi_runtime.o \ +efi_unicode_collation.o \ +efi_variable.o \ +efi_watchdog.o
Instead of line breaking them, just make each line an obj-y += line.
[...]
+const struct efi_unicode_collation_protocol efi_unicode_collation_protocol = {
- .stri_coll = efi_stri_coll,
- .metai_match = efi_metai_match,
- .str_lwr = efi_str_lwr,
- .str_upr = efi_str_upr,
- .fat_to_str = efi_fat_to_str,
- .str_to_fat = efi_str_to_fat,
- .supported_languages = "en-US",
I have to admit I'm slightly puzzled on the supported language field. The spec says quite clearly in appendix M what to do, but everyone seems to interpret the specs differently:
edk2 provides "en" appendix M example is "en-us" your patch provides "en-US"
I'm not sure which one of them is correct :).
The spec refers to RFC 4646. RFC 4646 refers to ISO 3166 which uses capital letters for the two letter region codes.
In RFC 4646 you can find the following example:
en-US (English as used in the United States)
The value from edk2 complies with RFC 4646. It simply does not specify a region.
So should I change the value to match edk2?
I think that would remove a potential pitfall, yes. And please change the Makefile according to my comment above :).
Alex