module uefi; alias EfiHandle = void*; typedef EfiEvent = void*; struct TableHeader { ulong signature; uint revision; uint headerSize; uint crc32; uint reserved; } struct ConfigurationTable { EfiGuid vendorGuid; void* vendorTable; } struct SystemTable { TableHeader header; EfiString firmwareVendor; uint firmwareRevision; EfiHandle consoleInHandle; SimpleTextInputProtocol* conIn; EfiHandle consoleOutHandle; SimpleTextOutputProtocol* conOut; EfiHandle standardErrorHandle; SimpleTextOutputProtocol* stdErr; RuntimeServices* runtimeServices; BootServices* bootServices; ulong numberOfTableEntries; ConfigurationTable* configurationTable; } alias WChar = ushort; typedef EfiString = inline WChar*; typedef WString = inline WChar[]; macro WString @w(String $string) @builtin @public => $$wstr16($string); // Time related definitions struct EfiTime @packed { ushort year; char month; char day; char hour; char minute; char second; char _pad1; uint nanosecond; short timezone; EfiDaylightFlags daylight; char _pad2; } bitstruct EfiDaylightFlags : char { bool adjust : 0; bool in_daylight : 1; char reserved : 2..7; }