Second Extended Filesystem (ext2) and other improvements (#33)
[lunaix-os.git] / lunaix-os / kernel / lunad.c
index 99cd066927dc9e8b9fc6f19d556f9b077204d064..d9e138f3aa9db1f525d57d335ecc128a6f2e8203 100644 (file)
@@ -41,8 +41,10 @@ int
 exec_initd()
 {
     int errno = 0;
+    const char* argv[] = { "/mnt/lunaix-os/usr/bin/init", 0 };
+    const char* envp[] = { 0 };
 
-    if ((errno = exec_kexecve("/mnt/lunaix-os/usr/bin/init", NULL, NULL))) {
+    if ((errno = exec_kexecve(argv[0], argv, envp))) {
         goto fail;
     }
 
@@ -56,8 +58,8 @@ fail:
 static void
 lunad_do_usr() {
     // No, these are not preemptive
-    cpu_disable_interrupt();
-    
+    no_preemption();
+
     if (!mount_bootmedium() || !exec_initd()) {
         fail("failed to initd");
     }
@@ -74,12 +76,6 @@ lunad_do_usr() {
 void _preemptible
 lunad_main()
 {
-    /*
-     * We must defer boot code/data cleaning to here, after we successfully
-     * escape that area
-     */
-    boot_cleanup();
-
     spawn_kthread((ptr_t)init_platform);
 
     /*
@@ -93,11 +89,11 @@ lunad_main()
         thread (which is preemptive!)
     */
 
-    cpu_enable_interrupt();
+    set_preemption();
     while (1)
     {
         cleanup_detached_threads();
-        sched_pass();
+        yield_current();
     }
 }