mirror of
https://github.com/ziglang/zig.git
synced 2025-12-10 00:03:10 +00:00
This implements #10113 for the self-hosted compiler only. It removes the ability to override alignment of packed struct fields, and removes the ability to put pointers and arrays inside packed structs. After this commit, nearly all the behavior tests pass for the stage2 llvm backend that involve packed structs. I didn't implement the compile errors or compile error tests yet. I'm waiting until we have stage2 building itself and then I want to rework the compile error test harness with inspiration from Vexu's arocc test harness. At that point it should be a much nicer dev experience to work on compile errors.
30 lines
1.1 KiB
Zig
30 lines
1.1 KiB
Zig
const uefi = @import("std").os.uefi;
|
|
const Guid = uefi.Guid;
|
|
const Handle = uefi.Handle;
|
|
const Status = uefi.Status;
|
|
|
|
/// Override EDID information
|
|
pub const EdidOverrideProtocol = extern struct {
|
|
_get_edid: fn (*const EdidOverrideProtocol, Handle, *u32, *usize, *?[*]u8) callconv(.C) Status,
|
|
|
|
/// Returns policy information and potentially a replacement EDID for the specified video output device.
|
|
pub fn getEdid(self: *const EdidOverrideProtocol, handle: Handle, attributes: *EdidOverrideProtocolAttributes, edid_size: *usize, edid: *?[*]u8) Status {
|
|
return self._get_edid(self, handle, @ptrCast(*u32, attributes), edid_size, edid);
|
|
}
|
|
|
|
pub const guid align(8) = Guid{
|
|
.time_low = 0x48ecb431,
|
|
.time_mid = 0xfb72,
|
|
.time_high_and_version = 0x45c0,
|
|
.clock_seq_high_and_reserved = 0xa9,
|
|
.clock_seq_low = 0x22,
|
|
.node = [_]u8{ 0xf4, 0x58, 0xfe, 0x04, 0x0b, 0xd5 },
|
|
};
|
|
};
|
|
|
|
pub const EdidOverrideProtocolAttributes = packed struct {
|
|
dont_override: bool,
|
|
enable_hot_plug: bool,
|
|
_pad: u30 = 0,
|
|
};
|