Lines Matching +full:data +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0+
30 /* Parse serialized data and transform it into efi_load_option structure */
31 void efi_deserialize_load_option(struct efi_load_option *lo, u8 *data) in efi_deserialize_load_option() argument
33 lo->attributes = get_unaligned_le32(data); in efi_deserialize_load_option()
34 data += sizeof(u32); in efi_deserialize_load_option()
36 lo->file_path_length = get_unaligned_le16(data); in efi_deserialize_load_option()
37 data += sizeof(u16); in efi_deserialize_load_option()
40 lo->label = (u16 *)data; in efi_deserialize_load_option()
41 data += (u16_strlen(lo->label) + 1) * sizeof(u16); in efi_deserialize_load_option()
44 lo->file_path = (struct efi_device_path *)data; in efi_deserialize_load_option()
45 data += lo->file_path_length; in efi_deserialize_load_option()
47 lo->optional_data = data; in efi_deserialize_load_option()
52 * Return a size of allocated data.
54 unsigned long efi_serialize_load_option(struct efi_load_option *lo, u8 **data) in efi_serialize_load_option() argument
57 unsigned long size; in efi_serialize_load_option() local
60 label_len = (u16_strlen(lo->label) + 1) * sizeof(u16); in efi_serialize_load_option()
61 option_len = strlen((char *)lo->optional_data); in efi_serialize_load_option()
63 /* total size */ in efi_serialize_load_option()
64 size = sizeof(lo->attributes); in efi_serialize_load_option()
65 size += sizeof(lo->file_path_length); in efi_serialize_load_option()
66 size += label_len; in efi_serialize_load_option()
67 size += lo->file_path_length; in efi_serialize_load_option()
68 size += option_len + 1; in efi_serialize_load_option()
69 p = malloc(size); in efi_serialize_load_option()
73 /* copy data */ in efi_serialize_load_option()
74 *data = p; in efi_serialize_load_option()
75 memcpy(p, &lo->attributes, sizeof(lo->attributes)); in efi_serialize_load_option()
76 p += sizeof(lo->attributes); in efi_serialize_load_option()
78 memcpy(p, &lo->file_path_length, sizeof(lo->file_path_length)); in efi_serialize_load_option()
79 p += sizeof(lo->file_path_length); in efi_serialize_load_option()
81 memcpy(p, lo->label, label_len); in efi_serialize_load_option()
84 memcpy(p, lo->file_path, lo->file_path_length); in efi_serialize_load_option()
85 p += lo->file_path_length; in efi_serialize_load_option()
87 memcpy(p, lo->optional_data, option_len); in efi_serialize_load_option()
91 return size; in efi_serialize_load_option()
96 efi_uintn_t *size) in get_var() argument
102 *size = 0; in get_var()
103 EFI_CALL(ret = rs->get_variable(name, v, NULL, size, buf)); in get_var()
105 buf = malloc(*size); in get_var()
106 EFI_CALL(ret = rs->get_variable(name, v, NULL, size, buf)); in get_var()
111 *size = 0; in get_var()
119 * Attempt to load load-option number 'n', returning device_path and file_path
130 efi_uintn_t size; in try_load_entry() local
137 load_option = get_var(varname, &efi_global_variable_guid, &size); in try_load_entry()
149 ret = efi_load_image_from_path(lo.file_path, &image, &size); in try_load_entry()
166 * available load-options, finding and returning the first one that can
173 efi_uintn_t size; in efi_bootmgr_load() local
180 bootorder = get_var(L"BootOrder", &efi_global_variable_guid, &size); in efi_bootmgr_load()
186 num = size / sizeof(uint16_t); in efi_bootmgr_load()