mirror of
https://xff.cz/git/u-boot/
synced 2025-10-26 16:13:55 +01:00
eficonfig: expose eficonfig_create_device_path()
Following commits are adding support for UEFI variable management via the eficonfig menu. Those functions needs to use eficonfig_create_device_path() to construct the full device path from device path of the volume and file path, so move it out of their static declarations. Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
d571f9b23e
commit
d656611310
@@ -436,14 +436,15 @@ static efi_status_t eficonfig_volume_selected(void *data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create_selected_device_path() - create device path
|
* eficonfig_create_device_path() - create device path
|
||||||
*
|
*
|
||||||
* @file_info: pointer to the selected file information
|
* @dp_volume: pointer to the volume
|
||||||
|
* @current_path: pointer to the file path u16 string
|
||||||
* Return:
|
* Return:
|
||||||
* device path or NULL. Caller must free the returned value
|
* device path or NULL. Caller must free the returned value
|
||||||
*/
|
*/
|
||||||
static
|
struct efi_device_path *eficonfig_create_device_path(struct efi_device_path *dp_volume,
|
||||||
struct efi_device_path *create_selected_device_path(struct eficonfig_select_file_info *file_info)
|
u16 *current_path)
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
void *buf;
|
void *buf;
|
||||||
@@ -452,7 +453,7 @@ struct efi_device_path *create_selected_device_path(struct eficonfig_select_file
|
|||||||
struct efi_device_path_file_path *fp;
|
struct efi_device_path_file_path *fp;
|
||||||
|
|
||||||
fp_size = sizeof(struct efi_device_path) +
|
fp_size = sizeof(struct efi_device_path) +
|
||||||
((u16_strlen(file_info->current_path) + 1) * sizeof(u16));
|
((u16_strlen(current_path) + 1) * sizeof(u16));
|
||||||
buf = calloc(1, fp_size + sizeof(END));
|
buf = calloc(1, fp_size + sizeof(END));
|
||||||
if (!buf)
|
if (!buf)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -461,13 +462,13 @@ struct efi_device_path *create_selected_device_path(struct eficonfig_select_file
|
|||||||
fp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE,
|
fp->dp.type = DEVICE_PATH_TYPE_MEDIA_DEVICE,
|
||||||
fp->dp.sub_type = DEVICE_PATH_SUB_TYPE_FILE_PATH,
|
fp->dp.sub_type = DEVICE_PATH_SUB_TYPE_FILE_PATH,
|
||||||
fp->dp.length = (u16)fp_size;
|
fp->dp.length = (u16)fp_size;
|
||||||
u16_strcpy(fp->str, file_info->current_path);
|
u16_strcpy(fp->str, current_path);
|
||||||
|
|
||||||
p = buf;
|
p = buf;
|
||||||
p += fp_size;
|
p += fp_size;
|
||||||
*((struct efi_device_path *)p) = END;
|
*((struct efi_device_path *)p) = END;
|
||||||
|
|
||||||
dp = efi_dp_append(file_info->dp_volume, (struct efi_device_path *)buf);
|
dp = efi_dp_append(dp_volume, (struct efi_device_path *)buf);
|
||||||
free(buf);
|
free(buf);
|
||||||
|
|
||||||
return dp;
|
return dp;
|
||||||
@@ -1472,7 +1473,8 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (bo->initrd_info.dp_volume) {
|
if (bo->initrd_info.dp_volume) {
|
||||||
dp = create_selected_device_path(&bo->initrd_info);
|
dp = eficonfig_create_device_path(bo->initrd_info.dp_volume,
|
||||||
|
bo->initrd_info.current_path);
|
||||||
if (!dp) {
|
if (!dp) {
|
||||||
ret = EFI_OUT_OF_RESOURCES;
|
ret = EFI_OUT_OF_RESOURCES;
|
||||||
goto out;
|
goto out;
|
||||||
@@ -1481,7 +1483,7 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo
|
|||||||
efi_free_pool(dp);
|
efi_free_pool(dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
dp = create_selected_device_path(&bo->file_info);
|
dp = eficonfig_create_device_path(bo->file_info.dp_volume, bo->file_info.current_path);
|
||||||
if (!dp) {
|
if (!dp) {
|
||||||
ret = EFI_OUT_OF_RESOURCES;
|
ret = EFI_OUT_OF_RESOURCES;
|
||||||
goto out;
|
goto out;
|
||||||
|
|||||||
@@ -99,5 +99,7 @@ efi_status_t eficonfig_append_menu_entry(struct efimenu *efi_menu,
|
|||||||
char *title, eficonfig_entry_func func,
|
char *title, eficonfig_entry_func func,
|
||||||
void *data);
|
void *data);
|
||||||
efi_status_t eficonfig_append_quit_entry(struct efimenu *efi_menu);
|
efi_status_t eficonfig_append_quit_entry(struct efimenu *efi_menu);
|
||||||
|
struct efi_device_path *eficonfig_create_device_path(struct efi_device_path *dp_volume,
|
||||||
|
u16 *current_path);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user