aboutsummaryrefslogtreecommitdiff
path: root/hikari/efi/protocols/block_io.zig
blob: b9a51450e8450c8f9b5893d0e10fa29940020ac4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! Hikari EFI Block I/O Protocol

const efi = @import("../efi.zig");
const types = @import("../types/types.zig");
const block = @import("../types/block.zig");

pub const BlockIoProtocol = extern struct {
    revision: u64,
    media: *block.BlockIoMedia,

    reset: *const fn (
        self: *BlockIoProtocol,
        extended_verification: bool,
    ) callconv(efi.akiba) types.Status,

    read_blocks: *const fn (
        self: *BlockIoProtocol,
        media_id: u32,
        lba: types.Lba,
        buffer_size: usize,
        buffer: [*]u8,
    ) callconv(efi.akiba) types.Status,

    write_blocks: *const fn (
        self: *BlockIoProtocol,
        media_id: u32,
        lba: types.Lba,
        buffer_size: usize,
        buffer: [*]const u8,
    ) callconv(efi.akiba) types.Status,

    flush_blocks: *const fn (
        self: *BlockIoProtocol,
    ) callconv(efi.akiba) types.Status,
};

pub const block_io_protocol_revision1: u64 = 0x00010000;
pub const block_io_protocol_revision2: u64 = 0x00020001;
pub const block_io_protocol_revision3: u64 = 0x0002001F;