提交 05f391e2 编写于 作者: A AKASHI Takahiro 提交者: Heinrich Schuchardt

efi_loader: disk: add efi_disk_is_removable()

This helper function will be used to determine if the device is
removable media, initially for handling a short-path loading.
Signed-off-by: NAKASHI Takahiro <takahiro.akashi@linaro.org>
Reviewed-by: NHeinrich Schuchardt <xypron.glpk@gmx.de>
上级 8131c85a
......@@ -663,6 +663,9 @@ efi_status_t efi_set_timer(struct efi_event *event, enum efi_timer_delay type,
/* Call this to signal an event */
void efi_signal_event(struct efi_event *event);
/* return true if the device is removable */
bool efi_disk_is_removable(efi_handle_t handle);
/* open file system: */
struct efi_simple_file_system_protocol *efi_simple_file_system(
struct blk_desc *desc, int part, struct efi_device_path *dp);
......
......@@ -73,6 +73,33 @@ static efi_status_t EFIAPI efi_disk_reset(struct efi_block_io *this,
return EFI_EXIT(EFI_SUCCESS);
}
/**
* efi_disk_is_removable() - check if the device is removable media
* @handle: efi object handle;
*
* Examine the device and determine if the device is a local block device
* and removable media.
*
* Return: true if removable, false otherwise
*/
bool efi_disk_is_removable(efi_handle_t handle)
{
struct efi_handler *handler;
struct efi_block_io *io;
efi_status_t ret;
ret = efi_search_protocol(handle, &efi_block_io_guid, &handler);
if (ret != EFI_SUCCESS)
return false;
io = handler->protocol_interface;
if (!io || !io->media)
return false;
return (bool)io->media->removable_media;
}
enum efi_disk_direction {
EFI_DISK_READ,
EFI_DISK_WRITE,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册