9ns: Add fs_files and tree_files
[akaros.git] / kern / src / init.c
index 8e3a70b..1304f28 100644 (file)
@@ -27,7 +27,6 @@
 #include <hashtable.h>
 #include <radix.h>
 #include <mm.h>
-#include <frontend.h>
 #include <ex_table.h>
 #include <percpu.h>
 
@@ -41,7 +40,7 @@
 #include <ext2fs.h>
 #include <kthread.h>
 #include <linker_func.h>
-#include <ip.h>
+#include <net/ip.h>
 #include <acpi.h>
 #include <coreboot_tables.h>
 
@@ -149,7 +148,6 @@ void kernel_init(multiboot_info_t *mboot_info)
        percpu_init();
        kthread_init();                                 /* might need to tweak when this happens */
        vmr_init();
-       file_init();
        page_check();
        idt_init();
        /* After kthread_init and idt_init, we can use a real kstack. */
@@ -257,12 +255,19 @@ void _panic(const char *file, int line, const char *fmt,...)
        cprintf("\n");
        va_end(ap);
 
-dead:
        monitor(NULL);
-       /* We could consider turning the lock checker back on here, but things are
-        * probably a mess anyways, and with it on we would probably lock up right
-        * away when we idle. */
-       //pcpui->__lock_checking_enabled++;
+       if (pcpui->cur_proc) {
+               printk("panic killing proc %d\n", pcpui->cur_proc->pid);
+               proc_destroy(pcpui->cur_proc);
+       }
+       /* Yikes!  We're claiming to be not in IRQ/trap ctx and not holding any
+        * locks.  Obviously we could be wrong, and could easily deadlock.  We could
+        * be in an IRQ handler, an unhandled kernel fault, or just a 'normal' panic
+        * in a syscall - any of which can involve unrestore invariants. */
+       pcpui->__ctx_depth = 0;
+       pcpui->lock_depth = 0;
+       if (pcpui->cur_kthread)
+               kth_panic_sysc(pcpui->cur_kthread);
        smp_idle();
 }