| 
   | 
const std = @import("std");
const uefi = std.os.uefi;
const Status = uefi.Status;
const cc = uefi.cc;
 | 
| BlockIo | 
pub const BlockIo = extern struct {
    const Self = @This();
    revision: u64,
    media: *EfiBlockMedia,
    _reset: *const fn (*BlockIo, extended_verification: bool) callconv(cc) Status,
    _read_blocks: *const fn (*BlockIo, media_id: u32, lba: u64, buffer_size: usize, buf: [*]u8) callconv(cc) Status,
    _write_blocks: *const fn (*BlockIo, media_id: u32, lba: u64, buffer_size: usize, buf: [*]u8) callconv(cc) Status,
    _flush_blocks: *const fn (*BlockIo) callconv(cc) Status,
 | 
| reset()Resets the block device hardware. | 
    pub fn reset(self: *Self, extended_verification: bool) Status {
        return self._reset(self, extended_verification);
    }
 | 
| readBlocks()Reads the number of requested blocks from the device. | 
    pub fn readBlocks(self: *Self, media_id: u32, lba: u64, buffer_size: usize, buf: [*]u8) Status {
        return self._read_blocks(self, media_id, lba, buffer_size, buf);
    }
 | 
| writeBlocks()Writes a specified number of blocks to the device. | 
    pub fn writeBlocks(self: *Self, media_id: u32, lba: u64, buffer_size: usize, buf: [*]u8) Status {
        return self._write_blocks(self, media_id, lba, buffer_size, buf);
    }
 | 
| flushBlocks()Flushes all modified data to a physical block device. | 
    pub fn flushBlocks(self: *Self) Status {
        return self._flush_blocks(self);
    }
    pub const guid align(8) = uefi.Guid{
        .time_low = 0x964e5b21,
        .time_mid = 0x6459,
        .time_high_and_version = 0x11d2,
        .clock_seq_high_and_reserved = 0x8e,
        .clock_seq_low = 0x39,
        .node = [_]u8{ 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b },
    };
    pub const EfiBlockMedia = extern struct {
        media_id: u32,
        removable_media: bool,
        media_present: bool,
        logical_partition: bool,
        read_only: bool,
        write_caching: bool,
        // field is updated. Returns the number of bytes per logical block.
        block_size: u32,
        io_align: u32,
        last_block: u64,
        // Revision 2
        lowest_aligned_lba: u64,
        logical_blocks_per_physical_block: u32,
        optimal_transfer_length_granularity: u32,
    };
};
 | 
| Generated by zstd-browse2 on 2023-11-04 14:12:37 -0400. |