summaryrefslogtreecommitdiff
path: root/src/user/init.cc
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2025-12-28 01:48:50 +0800
committerRichard Qin <richard.qin.x@gmail.com>2025-12-28 01:48:50 +0800
commitf3c8918b13a5226f53e7870d60436f812e5d9015 (patch)
tree5a934b82f23916e67e8cac9d230af93645611f3a /src/user/init.cc
parenta82ab8ad6d277ededc128678aebabf5fbdb01c45 (diff)
downloadlume-f3c8918b13a5226f53e7870d60436f812e5d9015.tar.gz
lume-f3c8918b13a5226f53e7870d60436f812e5d9015.tar.xz
feat(user): add user-space build system and init process to test fork/wait
Diffstat (limited to 'src/user/init.cc')
-rw-r--r--src/user/init.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/user/init.cc b/src/user/init.cc
new file mode 100644
index 0000000..3c42adf
--- /dev/null
+++ b/src/user/init.cc
@@ -0,0 +1,34 @@
+#include "user/user.h"
+
+int main();
+
+extern "C" void _start()
+{
+ exit(main());
+}
+
+int main()
+{
+ int pid = fork();
+
+ if (pid < 0)
+ {
+ write(1, "Fork failed\n", 12);
+ exit(1);
+ }
+
+ if (pid == 0)
+ {
+ write(1, "Hello from Child!\n", 18);
+ exit(0);
+ }
+ else
+ {
+ write(1, "Parent waiting...\n", 18);
+ wait(0);
+ write(1, "Parent: Child exited.\n", 22);
+ }
+
+ while (1);
+ return 0;
+} \ No newline at end of file