summaryrefslogtreecommitdiffstats
path: root/vendor/r-efi/src/protocols/disk_io2.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/r-efi/src/protocols/disk_io2.rs')
-rw-r--r--vendor/r-efi/src/protocols/disk_io2.rs58
1 files changed, 58 insertions, 0 deletions
diff --git a/vendor/r-efi/src/protocols/disk_io2.rs b/vendor/r-efi/src/protocols/disk_io2.rs
new file mode 100644
index 000000000..777ed4b44
--- /dev/null
+++ b/vendor/r-efi/src/protocols/disk_io2.rs
@@ -0,0 +1,58 @@
+//! Disk I/O 2 Protocol
+//!
+//! Extends the Disk I/O protocol interface to enable non-blocking /
+//! asynchronous byte-oriented disk operation.
+
+pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
+ 0x151c8eae,
+ 0x7f2c,
+ 0x472c,
+ 0x9e,
+ 0x54,
+ &[0x98, 0x28, 0x19, 0x4f, 0x6a, 0x88],
+);
+
+pub const REVISION: u64 = 0x0000000000020000u64;
+
+#[repr(C)]
+#[derive(Clone, Copy, Debug)]
+pub struct Token {
+ event: crate::base::Event,
+ transaction_status: crate::base::Status,
+}
+
+pub type ProtocolCancel = eficall! {fn(
+ *mut Protocol,
+) -> crate::base::Status};
+
+pub type ProtocolReadDiskEx = eficall! {fn(
+ *mut Protocol,
+ u32,
+ u64,
+ *mut Token,
+ usize,
+ *mut core::ffi::c_void,
+) -> crate::base::Status};
+
+pub type ProtocolWriteDiskEx = eficall! {fn(
+ *mut Protocol,
+ u32,
+ u64,
+ *mut Token,
+ usize,
+ *mut core::ffi::c_void,
+) -> crate::base::Status};
+
+pub type ProtocolFlushDiskEx = eficall! {fn(
+ *mut Protocol,
+ *mut Token,
+) -> crate::base::Status};
+
+#[repr(C)]
+pub struct Protocol {
+ pub revision: u64,
+ pub cancel: ProtocolCancel,
+ pub read_disk_ex: ProtocolReadDiskEx,
+ pub write_disk_ex: ProtocolWriteDiskEx,
+ pub flush_disk_ex: ProtocolFlushDiskEx,
+}