summaryrefslogtreecommitdiff
path: root/kernel/cxx/constructors.cxx
diff options
context:
space:
mode:
authorSamuel Johnson <[email protected]>2025-06-27 17:46:28 -0400
committerSamuel Johnson <[email protected]>2025-06-27 17:46:28 -0400
commit12fd3a91f138bf90520134682e38bf3b0341e660 (patch)
tree66b3f4a19f50a0f9883ca3f5a286a1e8dc3bc8c6 /kernel/cxx/constructors.cxx
parent6e65e584a3baf2dfe8906c2d847ca5169b91b3fc (diff)
Create kernel build infrastructure
Diffstat (limited to 'kernel/cxx/constructors.cxx')
-rw-r--r--kernel/cxx/constructors.cxx18
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/cxx/constructors.cxx b/kernel/cxx/constructors.cxx
new file mode 100644
index 0000000..8c21453
--- /dev/null
+++ b/kernel/cxx/constructors.cxx
@@ -0,0 +1,18 @@
+extern void (*_ctors_start[0])(void), (*_ctors_end[0])(void);
+extern void (*_dtors_start[0])(void), (*_dtors_end[0])(void);
+
+void init (void)
+{
+ for (void (**ctor)(void) = _ctors_start; ctor != _ctors_end; ctor++)
+ {
+ (*ctor)();
+ }
+}
+
+void fini (void)
+{
+ for (void (**dtor)(void) = _dtors_start; dtor != _dtors_end; dtor++)
+ {
+ (*dtor)();
+ }
+}