summaryrefslogtreecommitdiff
path: root/lib/uefi.c3l/uefi/uefi.c3i
diff options
context:
space:
mode:
authorandromeda <andromeda@bsd.my.domain>2026-10-19 18:54:26 -0400
committerandromeda <andromeda@bsd.my.domain>2026-10-19 18:54:26 -0400
commitaa113b17449e67dbd808587b411aeb21ea869974 (patch)
treeb6b7f1b71d761cbc043d5e97f72345d428c140ac /lib/uefi.c3l/uefi/uefi.c3i
parent97d331175ae47aec3d0b990ada9754a9e4298e32 (diff)
minimal running stub
Diffstat (limited to 'lib/uefi.c3l/uefi/uefi.c3i')
-rw-r--r--lib/uefi.c3l/uefi/uefi.c3i59
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;
+}