summaryrefslogtreecommitdiffstats
path: root/vendor/r-efi/src/protocols/shell.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/r-efi/src/protocols/shell.rs')
-rw-r--r--vendor/r-efi/src/protocols/shell.rs295
1 files changed, 295 insertions, 0 deletions
diff --git a/vendor/r-efi/src/protocols/shell.rs b/vendor/r-efi/src/protocols/shell.rs
new file mode 100644
index 000000000..01b6b2c68
--- /dev/null
+++ b/vendor/r-efi/src/protocols/shell.rs
@@ -0,0 +1,295 @@
+//! Shell Protocol
+//!
+//! Provides shell services to UEFI applications.
+
+pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
+ 0x6302d008,
+ 0x7f9b,
+ 0x4f30,
+ 0x87,
+ 0xac,
+ &[0x60, 0xc9, 0xfe, 0xf5, 0xda, 0x4e],
+);
+
+pub const MAJOR_VERSION: u32 = 0x00000002;
+pub const MINOR_VERSION: u32 = 0x00000002;
+
+pub type FileHandle = *mut core::ffi::c_void;
+
+pub type DeviceNameFlags = u32;
+pub const DEVICE_NAME_USE_COMPONENT_NAME: DeviceNameFlags = 0x00000001;
+pub const DEVICE_NAME_USE_DEVICE_PATH: DeviceNameFlags = 0x00000002;
+
+#[repr(C)]
+pub struct ListEntry {
+ pub flink: *mut ListEntry,
+ pub blink: *mut ListEntry,
+}
+
+#[repr(C)]
+pub struct FileInfo {
+ pub link: ListEntry,
+ pub status: crate::base::Status,
+ pub full_name: *mut crate::base::Char16,
+ pub file_name: *mut crate::base::Char16,
+ pub handle: FileHandle,
+ pub info: *mut crate::protocols::file::Info,
+}
+
+pub type Execute = eficall! {fn(
+ *mut crate::base::Handle,
+ *mut crate::base::Char16,
+ *mut *mut crate::base::Char16,
+ *mut crate::base::Status,
+) -> crate::base::Status};
+
+pub type GetEnv = eficall! {fn(
+ *mut crate::base::Char16,
+) -> *mut crate::base::Char16};
+
+pub type SetEnv = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Char16,
+ crate::base::Boolean,
+) -> crate::base::Status};
+
+pub type GetAlias = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Boolean,
+) -> *mut crate::base::Char16};
+
+pub type SetAlias = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Char16,
+ crate::base::Boolean,
+ crate::base::Boolean,
+) -> crate::base::Status};
+
+pub type GetHelpText = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Char16,
+ *mut *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetDevicePathFromMap = eficall! {fn(
+ *mut crate::base::Char16,
+) -> *mut crate::protocols::device_path::Protocol};
+
+pub type GetMapFromDevicePath = eficall! {fn(
+ *mut *mut crate::protocols::device_path::Protocol,
+) -> *mut crate::base::Char16};
+
+pub type GetDevicePathFromFilePath = eficall! {fn(
+ *mut crate::base::Char16,
+) -> *mut crate::protocols::device_path::Protocol};
+
+pub type GetFilePathFromDevicePath = eficall! {fn(
+ *mut crate::protocols::device_path::Protocol,
+) -> *mut crate::base::Char16};
+
+pub type SetMap = eficall! {fn(
+ *mut crate::protocols::device_path::Protocol,
+ *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetCurDir = eficall! {fn(
+ *mut crate::base::Char16,
+) -> *mut crate::base::Char16};
+
+pub type SetCurDir = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type OpenFileList = eficall! {fn(
+ *mut crate::base::Char16,
+ u64,
+ *mut *mut FileInfo,
+) -> crate::base::Status};
+
+pub type FreeFileList = eficall! {fn(
+ *mut *mut FileInfo,
+) -> crate::base::Status};
+
+pub type RemoveDupInFileList = eficall! {fn(
+ *mut *mut FileInfo,
+) -> crate::base::Status};
+
+pub type BatchIsActive = eficall! {fn() -> crate::base::Boolean};
+
+pub type IsRootShell = eficall! {fn() -> crate::base::Boolean};
+
+pub type EnablePageBreak = eficall! {fn()};
+
+pub type DisablePageBreak = eficall! {fn()};
+
+pub type GetPageBreak = eficall! {fn() -> crate::base::Boolean};
+
+pub type GetDeviceName = eficall! {fn(
+ crate::base::Handle,
+ DeviceNameFlags,
+ *mut crate::base::Char8,
+ *mut *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetFileInfo = eficall! {fn(
+ FileHandle,
+) -> *mut crate::protocols::file::Info};
+
+pub type SetFileInfo = eficall! {fn(
+ FileHandle,
+ *mut crate::protocols::file::Info
+) -> crate::base::Status};
+
+pub type OpenFileByName = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut FileHandle,
+ u64,
+) -> crate::base::Status};
+
+pub type CloseFile = eficall! {fn(
+ FileHandle,
+) -> crate::base::Status};
+
+pub type CreateFile = eficall! {fn(
+ *mut crate::base::Char16,
+ u64,
+ *mut FileHandle,
+) -> crate::base::Status};
+
+pub type ReadFile = eficall! {fn(
+ FileHandle,
+ *mut usize,
+ *mut core::ffi::c_void,
+) -> crate::base::Status};
+
+pub type WriteFile = eficall! {fn(
+ FileHandle,
+ *mut usize,
+ *mut core::ffi::c_void,
+) -> crate::base::Status};
+
+pub type DeleteFile = eficall! {fn(
+ FileHandle,
+) -> crate::base::Status};
+
+pub type DeleteFileByName = eficall! {fn(
+ *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetFilePosition = eficall! {fn(
+ FileHandle,
+ *mut u64,
+) -> crate::base::Status};
+
+pub type SetFilePosition = eficall! {fn(
+ FileHandle,
+ u64,
+) -> crate::base::Status};
+
+pub type FlushFile = eficall! {fn(
+ FileHandle,
+) -> crate::base::Status};
+
+pub type FindFiles = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut *mut FileInfo,
+) -> crate::base::Status};
+
+pub type FindFilesInDir = eficall! {fn(
+ FileHandle,
+ *mut *mut FileInfo,
+) -> crate::base::Status};
+
+pub type GetFileSize = eficall! {fn(
+ FileHandle,
+ *mut u64,
+) -> crate::base::Status};
+
+pub type OpenRoot = eficall! {fn(
+ *mut crate::protocols::device_path::Protocol,
+ *mut FileHandle,
+) -> crate::base::Status};
+
+pub type OpenRootByHandle = eficall! {fn(
+ crate::base::Handle,
+ *mut FileHandle,
+) -> crate::base::Status};
+
+pub type RegisterGuidName = eficall! {fn(
+ *mut crate::base::Guid,
+ *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetGuidName = eficall! {fn(
+ *mut crate::base::Guid,
+ *mut *mut crate::base::Char16,
+) -> crate::base::Status};
+
+pub type GetGuidFromName = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut crate::base::Guid,
+) -> crate::base::Status};
+
+pub type GetEnvEx = eficall! {fn(
+ *mut crate::base::Char16,
+ *mut u32,
+) -> *mut crate::base::Char16};
+
+#[repr(C)]
+pub struct Protocol {
+ pub execute: Execute,
+ pub get_env: GetEnv,
+ pub set_env: SetEnv,
+ pub get_alias: GetAlias,
+ pub set_alias: SetAlias,
+ pub get_help_text: GetHelpText,
+ pub get_device_path_from_map: GetDevicePathFromMap,
+ pub get_map_from_device_path: GetMapFromDevicePath,
+ pub get_device_path_from_file_path: GetDevicePathFromFilePath,
+ pub get_file_path_from_device_path: GetFilePathFromDevicePath,
+ pub set_map: SetMap,
+
+ pub get_cur_dir: GetCurDir,
+ pub set_cur_dir: SetCurDir,
+ pub open_file_list: OpenFileList,
+ pub free_file_list: FreeFileList,
+ pub remove_dup_in_file_list: RemoveDupInFileList,
+
+ pub batch_is_active: BatchIsActive,
+ pub is_root_shell: IsRootShell,
+ pub enable_page_break: EnablePageBreak,
+ pub disable_page_break: DisablePageBreak,
+ pub get_page_break: GetPageBreak,
+ pub get_device_name: GetDeviceName,
+
+ pub get_file_info: GetFileInfo,
+ pub set_file_info: SetFileInfo,
+ pub open_file_by_name: OpenFileByName,
+ pub close_file: CloseFile,
+ pub create_file: CreateFile,
+ pub read_file: ReadFile,
+ pub write_file: WriteFile,
+ pub delete_file: DeleteFile,
+ pub delete_file_by_name: DeleteFileByName,
+ pub get_file_position: GetFilePosition,
+ pub set_file_position: SetFilePosition,
+ pub flush_file: FlushFile,
+ pub find_files: FindFiles,
+ pub find_files_in_dir: FindFilesInDir,
+ pub get_file_size: GetFileSize,
+
+ pub open_root: OpenRoot,
+ pub open_root_by_handle: OpenRootByHandle,
+
+ pub execution_break: crate::base::Event,
+
+ pub major_version: u32,
+ pub minor_version: u32,
+ pub register_guid_name: RegisterGuidName,
+ pub get_guid_name: GetGuidName,
+ pub get_guid_from_name: GetGuidFromName,
+
+ // Shell 2.1
+ pub get_env_ex: GetEnvEx,
+}