mirror of
https://xff.cz/git/u-boot/
synced 2025-11-01 10:56:02 +01:00
eficonfig: menu-driven addition of UEFI boot option
This commit add the "eficonfig" command. The "eficonfig" command implements the menu-driven UEFI boot option maintenance feature. This commit implements the addition of new boot option. User can select the block device volume having efi_simple_file_system_protocol and select the file corresponding to the Boot#### variable. User can also enter the description and optional_data of the BOOT#### variable in utf8. This commit adds "include/efi_config.h", it contains the common definition to be used from other menus such as UEFI Secure Boot key management. Signed-off-by: Masahisa Kojima <masahisa.kojima@linaro.org>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
c2238fcf0c
commit
87d791423a
@@ -246,10 +246,10 @@ error:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static efi_status_t efi_file_open_int(struct efi_file_handle *this,
|
||||
struct efi_file_handle **new_handle,
|
||||
u16 *file_name, u64 open_mode,
|
||||
u64 attributes)
|
||||
efi_status_t efi_file_open_int(struct efi_file_handle *this,
|
||||
struct efi_file_handle **new_handle,
|
||||
u16 *file_name, u64 open_mode,
|
||||
u64 attributes)
|
||||
{
|
||||
struct file_handle *fh = to_fh(this);
|
||||
efi_status_t ret;
|
||||
@@ -369,11 +369,17 @@ static efi_status_t file_close(struct file_handle *fh)
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
static efi_status_t EFIAPI efi_file_close(struct efi_file_handle *file)
|
||||
efi_status_t efi_file_close_int(struct efi_file_handle *file)
|
||||
{
|
||||
struct file_handle *fh = to_fh(file);
|
||||
|
||||
return file_close(fh);
|
||||
}
|
||||
|
||||
static efi_status_t EFIAPI efi_file_close(struct efi_file_handle *file)
|
||||
{
|
||||
EFI_ENTRY("%p", file);
|
||||
return EFI_EXIT(file_close(fh));
|
||||
return EFI_EXIT(efi_file_close_int(file));
|
||||
}
|
||||
|
||||
static efi_status_t EFIAPI efi_file_delete(struct efi_file_handle *file)
|
||||
@@ -562,8 +568,8 @@ static efi_status_t dir_read(struct file_handle *fh, u64 *buffer_size,
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
static efi_status_t efi_file_read_int(struct efi_file_handle *this,
|
||||
efi_uintn_t *buffer_size, void *buffer)
|
||||
efi_status_t efi_file_read_int(struct efi_file_handle *this,
|
||||
efi_uintn_t *buffer_size, void *buffer)
|
||||
{
|
||||
struct file_handle *fh = to_fh(this);
|
||||
efi_status_t ret = EFI_SUCCESS;
|
||||
@@ -773,24 +779,11 @@ out:
|
||||
return EFI_EXIT(ret);
|
||||
}
|
||||
|
||||
/**
|
||||
* efi_file_setpos() - set current position in file
|
||||
*
|
||||
* This function implements the SetPosition service of the EFI file protocol.
|
||||
* See the UEFI spec for details.
|
||||
*
|
||||
* @file: file handle
|
||||
* @pos: new file position
|
||||
* Return: status code
|
||||
*/
|
||||
static efi_status_t EFIAPI efi_file_setpos(struct efi_file_handle *file,
|
||||
u64 pos)
|
||||
efi_status_t efi_file_setpos_int(struct efi_file_handle *file, u64 pos)
|
||||
{
|
||||
struct file_handle *fh = to_fh(file);
|
||||
efi_status_t ret = EFI_SUCCESS;
|
||||
|
||||
EFI_ENTRY("%p, %llu", file, pos);
|
||||
|
||||
if (fh->isdir) {
|
||||
if (pos != 0) {
|
||||
ret = EFI_UNSUPPORTED;
|
||||
@@ -812,6 +805,28 @@ static efi_status_t EFIAPI efi_file_setpos(struct efi_file_handle *file,
|
||||
fh->offset = pos;
|
||||
|
||||
error:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* efi_file_setpos() - set current position in file
|
||||
*
|
||||
* This function implements the SetPosition service of the EFI file protocol.
|
||||
* See the UEFI spec for details.
|
||||
*
|
||||
* @file: file handle
|
||||
* @pos: new file position
|
||||
* Return: status code
|
||||
*/
|
||||
static efi_status_t EFIAPI efi_file_setpos(struct efi_file_handle *file,
|
||||
u64 pos)
|
||||
{
|
||||
efi_status_t ret = EFI_SUCCESS;
|
||||
|
||||
EFI_ENTRY("%p, %llu", file, pos);
|
||||
|
||||
ret = efi_file_setpos_int(file, pos);
|
||||
|
||||
return EFI_EXIT(ret);
|
||||
}
|
||||
|
||||
@@ -1138,17 +1153,23 @@ struct efi_file_handle *efi_file_from_path(struct efi_device_path *fp)
|
||||
return f;
|
||||
}
|
||||
|
||||
efi_status_t efi_open_volume_int(struct efi_simple_file_system_protocol *this,
|
||||
struct efi_file_handle **root)
|
||||
{
|
||||
struct file_system *fs = to_fs(this);
|
||||
|
||||
*root = file_open(fs, NULL, NULL, 0, 0);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
static efi_status_t EFIAPI
|
||||
efi_open_volume(struct efi_simple_file_system_protocol *this,
|
||||
struct efi_file_handle **root)
|
||||
{
|
||||
struct file_system *fs = to_fs(this);
|
||||
|
||||
EFI_ENTRY("%p, %p", this, root);
|
||||
|
||||
*root = file_open(fs, NULL, NULL, 0, 0);
|
||||
|
||||
return EFI_EXIT(EFI_SUCCESS);
|
||||
return EFI_EXIT(efi_open_volume_int(this, root));
|
||||
}
|
||||
|
||||
struct efi_simple_file_system_protocol *
|
||||
|
||||
Reference in New Issue
Block a user