diff options
Diffstat (limited to 'lib/uefi.c3l/uefi/uefi.c3i')
| -rw-r--r-- | lib/uefi.c3l/uefi/uefi.c3i | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/lib/uefi.c3l/uefi/uefi.c3i b/lib/uefi.c3l/uefi/uefi.c3i new file mode 100644 index 0000000..ab215c2 --- /dev/null +++ b/lib/uefi.c3l/uefi/uefi.c3i @@ -0,0 +1,59 @@ +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; +} |
