git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Menuconfig Implementation and auto-qemu refactoring (#44)
[lunaix-os.git]
/
lunaix-os
/
kernel
/
lunad.c
diff --git
a/lunaix-os/kernel/lunad.c
b/lunaix-os/kernel/lunad.c
index 99cd066927dc9e8b9fc6f19d556f9b077204d064..d9e138f3aa9db1f525d57d335ecc128a6f2e8203 100644
(file)
--- a/
lunaix-os/kernel/lunad.c
+++ b/
lunaix-os/kernel/lunad.c
@@
-41,8
+41,10
@@
int
exec_initd()
{
int errno = 0;
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;
}
goto fail;
}
@@
-56,8
+58,8
@@
fail:
static void
lunad_do_usr() {
// No, these are not preemptive
static void
lunad_do_usr() {
// No, these are not preemptive
-
cpu_disable_interrupt
();
-
+
no_preemption
();
+
if (!mount_bootmedium() || !exec_initd()) {
fail("failed to initd");
}
if (!mount_bootmedium() || !exec_initd()) {
fail("failed to initd");
}
@@
-74,12
+76,6
@@
lunad_do_usr() {
void _preemptible
lunad_main()
{
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);
/*
spawn_kthread((ptr_t)init_platform);
/*
@@
-93,11
+89,11
@@
lunad_main()
thread (which is preemptive!)
*/
thread (which is preemptive!)
*/
-
cpu_enable_interrupt
();
+
set_preemption
();
while (1)
{
cleanup_detached_threads();
while (1)
{
cleanup_detached_threads();
-
sched_pass
();
+
yield_current
();
}
}
}
}