diff --git a/lib/std/os/uefi.zig b/lib/std/os/uefi.zig index 8ebe8e4b91b01e00c1d65d0548ccf8ddd8d5f3d0..07bbe707cd4d10a4f0880565bd5ce7aad30b1117 100644 --- a/lib/std/os/uefi.zig +++ b/lib/std/os/uefi.zig @@ -105,3 +105,6 @@ pub const TimeCapabilities = extern struct { /// If true, a time set operation clears the device's time below the resolution level. sets_to_zero: bool, }; + +/// File Handle as specified in the EFI Shell Spec +pub const FileHandle = *@OpaqueType(); diff --git a/lib/std/os/uefi/protocols.zig b/lib/std/os/uefi/protocols.zig index a22b8c348f3f5d10db3bb22d3f91d848d4ae6566..a14f7f70d5b9c3d56d1ea450dd6f5d37cc1432f0 100644 --- a/lib/std/os/uefi/protocols.zig +++ b/lib/std/os/uefi/protocols.zig @@ -87,3 +87,5 @@ pub const HIIPopupType = @import("protocols/hii_popup_protocol.zig").HIIPopupTyp pub const HIIPopupSelection = @import("protocols/hii_popup_protocol.zig").HIIPopupSelection; pub const RNGProtocol = @import("protocols/rng_protocol.zig").RNGProtocol; + +pub const ShellParametersProtocol = @import("protocols/shell_parameters_protocol.zig").ShellParametersProtocol; diff --git a/lib/std/os/uefi/protocols/shell_parameters_protocol.zig b/lib/std/os/uefi/protocols/shell_parameters_protocol.zig new file mode 100644 index 0000000000000000000000000000000000000000..afbd26e9390a17ed4de3e0c6373d3aca1c55ccd0 --- /dev/null +++ b/lib/std/os/uefi/protocols/shell_parameters_protocol.zig @@ -0,0 +1,20 @@ +const uefi = @import("std").os.uefi; +const Guid = uefi.Guid; +const FileHandle = uefi.FileHandle; + +pub const ShellParametersProtocol = extern struct { + argv: [*][*:0]const u16, + argc: usize, + stdin: FileHandle, + stdout: FileHandle, + stderr: FileHandle, + + pub const guid align(8) = Guid{ + .time_low = 0x752f3136, + .time_mid = 0x4e16, + .time_high_and_version = 0x4fdc, + .clock_seq_high_and_reserved = 0xa2, + .clock_seq_low = 0x2a, + .node = [_]u8{ 0xe5, 0xf4, 0x68, 0x12, 0xf4, 0xca }, + }; +};