efi_loader: adjust definitions of variable services
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 17 May 2018 05:57:05 +0000 (07:57 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 3 Jun 2018 13:27:20 +0000 (15:27 +0200)
The definitons of the variable services are adjusted:
- use efi_uintn_t instead of unsigned long
- use u16 * instead of s16 * for Unicode strings
- correct definition of QueryVariableInfo
- rename efi_get_next_variable to efi_get_next_variable_name

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/efi_api.h
include/efi_loader.h
lib/efi_loader/efi_bootmgr.c
lib/efi_loader/efi_runtime.c
lib/efi_loader/efi_variable.c

index 64c27e494bcdf38341510b2d0a5b83d38e9a5a57..094be6edf9b055e6fc1cdf2cd66c97c6187aa709 100644 (file)
@@ -214,15 +214,15 @@ struct efi_runtime_services {
                        uint32_t descriptor_version,
                        struct efi_mem_desc *virtmap);
        efi_status_t (*convert_pointer)(unsigned long dbg, void **address);
-       efi_status_t (EFIAPI *get_variable)(s16 *variable_name,
-                       efi_guid_t *vendor, u32 *attributes,
-                       unsigned long *data_size, void *data);
-       efi_status_t (EFIAPI *get_next_variable)(
-                       unsigned long *variable_name_size,
-                       s16 *variable_name, efi_guid_t *vendor);
-       efi_status_t (EFIAPI *set_variable)(s16 *variable_name,
-                       efi_guid_t *vendor, u32 attributes,
-                       unsigned long data_size, void *data);
+       efi_status_t (EFIAPI *get_variable)(u16 *variable_name,
+                                           efi_guid_t *vendor, u32 *attributes,
+                                           efi_uintn_t *data_size, void *data);
+       efi_status_t (EFIAPI *get_next_variable_name)(
+                       efi_uintn_t *variable_name_size,
+                       u16 *variable_name, efi_guid_t *vendor);
+       efi_status_t (EFIAPI *set_variable)(u16 *variable_name,
+                                           efi_guid_t *vendor, u32 attributes,
+                                           efi_uintn_t data_size, void *data);
        efi_status_t (EFIAPI *get_next_high_mono_count)(
                        uint32_t *high_count);
        void (EFIAPI *reset_system)(enum efi_reset_type reset_type,
@@ -239,9 +239,9 @@ struct efi_runtime_services {
                        u32 reset_type);
        efi_status_t (EFIAPI *query_variable_info)(
                        u32 attributes,
-                       u64 maximum_variable_storage_size,
-                       u64 remaining_variable_storage_size,
-                       u64 maximum_variable_size);
+                       u64 *maximum_variable_storage_size,
+                       u64 *remaining_variable_storage_size,
+                       u64 *maximum_variable_size);
 };
 
 /* EFI event group GUID definitions */
index ec000658f6de4220af3edfcbe9000e3a507faafb..0c286bf6bed72b4d32b5abdaeaee7e38b69a001d 100644 (file)
@@ -422,15 +422,15 @@ efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle,
                                 struct efi_system_table *systab);
 #endif
 
-efi_status_t EFIAPI efi_get_variable(s16 *variable_name,
-               efi_guid_t *vendor, u32 *attributes,
-               unsigned long *data_size, void *data);
-efi_status_t EFIAPI efi_get_next_variable(
-               unsigned long *variable_name_size,
-               s16 *variable_name, efi_guid_t *vendor);
-efi_status_t EFIAPI efi_set_variable(s16 *variable_name,
-               efi_guid_t *vendor, u32 attributes,
-               unsigned long data_size, void *data);
+efi_status_t EFIAPI efi_get_variable(u16 *variable_name, efi_guid_t *vendor,
+                                    u32 *attributes, efi_uintn_t *data_size,
+                                    void *data);
+efi_status_t EFIAPI efi_get_next_variable_name(efi_uintn_t *variable_name_size,
+                                              u16 *variable_name,
+                                              efi_guid_t *vendor);
+efi_status_t EFIAPI efi_set_variable(u16 *variable_name, efi_guid_t *vendor,
+                                    u32 attributes, efi_uintn_t data_size,
+                                    void *data);
 
 void *efi_bootmgr_load(struct efi_device_path **device_path,
                       struct efi_device_path **file_path);
index 153e17375737bc7fbffeb008b5f1cf5f5f48e396..853358ab937874051eb01f401944516061957b65 100644 (file)
@@ -70,17 +70,17 @@ static void parse_load_option(struct load_option *lo, void *ptr)
 
 /* free() the result */
 static void *get_var(u16 *name, const efi_guid_t *vendor,
-                    unsigned long *size)
+                    efi_uintn_t *size)
 {
        efi_guid_t *v = (efi_guid_t *)vendor;
        efi_status_t ret;
        void *buf = NULL;
 
        *size = 0;
-       EFI_CALL(ret = rs->get_variable((s16 *)name, v, NULL, size, buf));
+       EFI_CALL(ret = rs->get_variable(name, v, NULL, size, buf));
        if (ret == EFI_BUFFER_TOO_SMALL) {
                buf = malloc(*size);
-               EFI_CALL(ret = rs->get_variable((s16 *)name, v, NULL, size, buf));
+               EFI_CALL(ret = rs->get_variable(name, v, NULL, size, buf));
        }
 
        if (ret != EFI_SUCCESS) {
@@ -104,7 +104,7 @@ static void *try_load_entry(uint16_t n, struct efi_device_path **device_path,
        u16 varname[] = L"Boot0000";
        u16 hexmap[] = L"0123456789ABCDEF";
        void *load_option, *image = NULL;
-       unsigned long size;
+       efi_uintn_t size;
 
        varname[4] = hexmap[(n & 0xf000) >> 12];
        varname[5] = hexmap[(n & 0x0f00) >> 8];
@@ -147,7 +147,7 @@ void *efi_bootmgr_load(struct efi_device_path **device_path,
                       struct efi_device_path **file_path)
 {
        uint16_t *bootorder;
-       unsigned long size;
+       efi_uintn_t size;
        void *image = NULL;
        int i, num;
 
index e027f47a93e0c23bc1877800e869886e819dd49a..65f2bcf1401adaca95fc4a0335b0d21e12498d1f 100644 (file)
@@ -212,7 +212,7 @@ static const struct efi_runtime_detach_list_struct efi_runtime_detach_list[] = {
                .ptr = &efi_runtime_services.get_variable,
                .patchto = &efi_device_error,
        }, {
-               .ptr = &efi_runtime_services.get_next_variable,
+               .ptr = &efi_runtime_services.get_next_variable_name,
                .patchto = &efi_device_error,
        }, {
                .ptr = &efi_runtime_services.set_variable,
@@ -444,9 +444,9 @@ efi_status_t __efi_runtime EFIAPI efi_query_capsule_caps(
 
 efi_status_t __efi_runtime EFIAPI efi_query_variable_info(
                        u32 attributes,
-                       u64 maximum_variable_storage_size,
-                       u64 remaining_variable_storage_size,
-                       u64 maximum_variable_size)
+                       u64 *maximum_variable_storage_size,
+                       u64 *remaining_variable_storage_size,
+                       u64 *maximum_variable_size)
 {
        return EFI_UNSUPPORTED;
 }
@@ -464,7 +464,7 @@ struct efi_runtime_services __efi_runtime_data efi_runtime_services = {
        .set_virtual_address_map = &efi_set_virtual_address_map,
        .convert_pointer = (void *)&efi_invalid_parameter,
        .get_variable = efi_get_variable,
-       .get_next_variable = efi_get_next_variable,
+       .get_next_variable_name = efi_get_next_variable_name,
        .set_variable = efi_set_variable,
        .get_next_high_mono_count = (void *)&efi_device_error,
        .reset_system = &efi_reset_system_boottime,
index 7e0e7f020ee12d428669d4027341703640a64c3a..64cf981cdc5bfc56e52a21f7605f40ed455f0154 100644 (file)
@@ -113,8 +113,8 @@ static char *mem2hex(char *hexstr, const u8 *mem, int count)
        return hexstr;
 }
 
-static efi_status_t efi_to_native(char *native, s16 *variable_name,
-               efi_guid_t *vendor)
+static efi_status_t efi_to_native(char *native, u16 *variable_name,
+                                 efi_guid_t *vendor)
 {
        size_t len;
 
@@ -176,9 +176,9 @@ static const char *parse_attr(const char *str, u32 *attrp)
 }
 
 /* http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES#GetVariable.28.29 */
-efi_status_t EFIAPI efi_get_variable(s16 *variable_name,
-               efi_guid_t *vendor, u32 *attributes,
-               unsigned long *data_size, void *data)
+efi_status_t EFIAPI efi_get_variable(u16 *variable_name, efi_guid_t *vendor,
+                                    u32 *attributes, efi_uintn_t *data_size,
+                                    void *data)
 {
        char native_name[MAX_NATIVE_VAR_NAME + 1];
        efi_status_t ret;
@@ -250,9 +250,9 @@ efi_status_t EFIAPI efi_get_variable(s16 *variable_name,
 }
 
 /* http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES#GetNextVariableName.28.29 */
-efi_status_t EFIAPI efi_get_next_variable(
-               unsigned long *variable_name_size,
-               s16 *variable_name, efi_guid_t *vendor)
+efi_status_t EFIAPI efi_get_next_variable_name(efi_uintn_t *variable_name_size,
+                                              u16 *variable_name,
+                                              efi_guid_t *vendor)
 {
        EFI_ENTRY("%p \"%ls\" %pUl", variable_name_size, variable_name, vendor);
 
@@ -260,16 +260,16 @@ efi_status_t EFIAPI efi_get_next_variable(
 }
 
 /* http://wiki.phoenix.com/wiki/index.php/EFI_RUNTIME_SERVICES#SetVariable.28.29 */
-efi_status_t EFIAPI efi_set_variable(s16 *variable_name,
-               efi_guid_t *vendor, u32 attributes,
-               unsigned long data_size, void *data)
+efi_status_t EFIAPI efi_set_variable(u16 *variable_name, efi_guid_t *vendor,
+                                    u32 attributes, efi_uintn_t data_size,
+                                    void *data)
 {
        char native_name[MAX_NATIVE_VAR_NAME + 1];
        efi_status_t ret = EFI_SUCCESS;
        char *val, *s;
        u32 attr;
 
-       EFI_ENTRY("\"%ls\" %pUl %x %lu %p", variable_name, vendor, attributes,
+       EFI_ENTRY("\"%ls\" %pUl %x %zu %p", variable_name, vendor, attributes,
                  data_size, data);
 
        if (!variable_name || !vendor)