Clean up IPv6 sources.
[akaros.git] / kern / src / monitor.c
index c44122a..33ea8df 100644 (file)
@@ -41,7 +41,7 @@ static command_t commands[] = {
        { "help", "Display this list of commands", mon_help },
        { "kerninfo", "Display information about the kernel", mon_kerninfo },
        { "backtrace", "Dump a backtrace", mon_backtrace },
-       { "bt", "Dump a backtrace", mon_bt },
+       { "bt", "Dump a backtrace", mon_backtrace },
        { "reboot", "Take a ride to the South Bay", mon_reboot },
        { "showmapping", "Shows VA->PA mappings", mon_showmapping},
        { "sm", "Shows VA->PA mappings", mon_sm},
@@ -93,12 +93,11 @@ int mon_ps(int argc, char** argv, struct hw_trapframe *hw_tf)
 
 int mon_kerninfo(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
-       extern char _start[], etext[], edata[], end[];
+       extern char _start[], etext[], end[];
 
        cprintf("Special kernel symbols:\n");
        cprintf("  _start %016x (virt)  %016x (phys)\n", _start, (uintptr_t)(_start - KERNBASE));
        cprintf("  etext  %016x (virt)  %016x (phys)\n", etext, (uintptr_t)(etext - KERNBASE));
-       cprintf("  edata  %016x (virt)  %016x (phys)\n", edata, (uintptr_t)(edata - KERNBASE));
        cprintf("  end    %016x (virt)  %016x (phys)\n", end, (uintptr_t)(end - KERNBASE));
        cprintf("Kernel executable memory footprint: %dKB\n",
                (uint32_t)(end-_start+1023)/1024);
@@ -128,11 +127,6 @@ int mon_backtrace(int argc, char **argv, struct hw_trapframe *hw_tf)
        return __backtrace(argc, argv, hw_tf);
 }
 
-int mon_bt(int argc, char **argv, struct hw_trapframe *hw_tf)
-{
-       return __backtrace(argc, argv, hw_tf);
-}
-
 int mon_reboot(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
        cprintf("[Scottish Accent]: She's goin' down, Cap'n!\n");
@@ -309,8 +303,13 @@ int mon_bin_run(int argc, char **argv, struct hw_trapframe *hw_tf)
        }
        struct file *program;
        int retval = 0;
-       char buf[6 + MAX_FILENAME_SZ] = "/bin/";        /* /bin/ + max + \0 */
-       strncpy(buf + 5, argv[1], MAX_FILENAME_SZ);
+       char buf[5 + MAX_FILENAME_SZ + 1] = "/bin/";    /* /bin/ + max + \0 */
+
+       strlcpy(buf, "/bin/", sizeof(buf));
+       if (strlcat(buf, argv[1], sizeof(buf)) > sizeof(buf)) {
+               printk("Filename '%s' too long!\n", argv[1]);
+               return 1;
+       }
        program = do_file_open(buf, O_READ, 0);
        if (!program) {
                printk("No such program!\n");
@@ -342,7 +341,6 @@ int mon_bin_run(int argc, char **argv, struct hw_trapframe *hw_tf)
 
 int mon_procinfo(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
-       int8_t irq_state = 0;
        if (argc < 2) {
                printk("Usage: procinfo OPTION\n");
                printk("\tall: show all active pids\n");
@@ -380,9 +378,7 @@ int mon_procinfo(int argc, char **argv, struct hw_trapframe *hw_tf)
                        printk("No such proc\n");
                        return 1;
                }
-               enable_irqsave(&irq_state);
                proc_destroy(p);
-               disable_irqsave(&irq_state);
                proc_decref(p);
        } else {
                printk("Bad option\n");
@@ -404,7 +400,7 @@ int mon_pip(int argc, char **argv, struct hw_trapframe *hw_tf)
 int mon_kill(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
        struct proc *p;
-       int8_t irq_state = 0;
+
        if (argc < 2) {
                printk("Usage: kill PID\n");
                return 1;
@@ -414,9 +410,7 @@ int mon_kill(int argc, char **argv, struct hw_trapframe *hw_tf)
                printk("No such proc\n");
                return 1;
        }
-       enable_irqsave(&irq_state);
        proc_destroy(p);
-       disable_irqsave(&irq_state);
        proc_decref(p);
        return 0;
 }
@@ -522,7 +516,6 @@ int mon_measure(int argc, char **argv, struct hw_trapframe *hw_tf)
 {
        uint64_t begin = 0, diff = 0;
        uint32_t end_refcnt = 0;
-       int8_t irq_state = 0;
 
        if (argc < 2) {
                printk("Usage: measure OPTION\n");
@@ -550,9 +543,7 @@ int mon_measure(int argc, char **argv, struct hw_trapframe *hw_tf)
                printk("Warning: this will be inaccurate due to the appserver.\n");
                end_refcnt = kref_refcnt(&p->p_kref) - p->procinfo->num_vcores - 1;
 #endif /* CONFIG_APPSERVER */
-               enable_irqsave(&irq_state);
                proc_destroy(p);
-               disable_irqsave(&irq_state);
                proc_decref(p);
 #ifdef CONFIG_APPSERVER
                /* Won't be that accurate, since it's not actually going through the
@@ -962,13 +953,13 @@ int mon_fs(int argc, char **argv, struct hw_trapframe *hw_tf)
                        printk("DENTRY     FLAGS      REFCNT NAME\n");
                        printk("--------------------------------\n");
                        /* Hash helper */
-                       void print_dcache_entry(void *item)
+                       void print_dcache_entry(void *item, void *opaque)
                        {
                                struct dentry *d_i = (struct dentry*)item;
                                printk("%p %p %02d     %s\n", d_i, d_i->d_flags,
                                       kref_refcnt(&d_i->d_kref), d_i->d_name.name);
                        }
-                       hash_for_each(sb->s_dcache, print_dcache_entry);
+                       hash_for_each(sb->s_dcache, print_dcache_entry, NULL);
                }
                if (argc < 3)
                        return 0;
@@ -1187,19 +1178,19 @@ usage:
                return 1;
        }
        if (!strcmp(argv[1], "idles")) {
-               print_idlecoremap();
+               print_idle_core_map();
        } else if (!strcmp(argv[1], "diag")) {
                sched_diag();
        } else if (!strcmp(argv[1], "resources")) {
                print_all_resources();
        } else if (!strcmp(argv[1], "sort")) {
-               sort_idles();
+               sort_idle_cores();
        } else if (!strcmp(argv[1], "nc")) {
                if (argc != 3) {
                        printk("Need a pcore number.\n");
                        return 1;
                }
-               next_core(strtol(argv[2], 0, 0));
+               next_core_to_alloc(strtol(argv[2], 0, 0));
        } else {
                printk("Bad option %s\n", argv[1]);
                goto usage;