Merge branch 'net-dev'. See body of commit for details.
[akaros.git] / kern / src / monitor.c
index 3937440..b1edbcd 100644 (file)
@@ -1,6 +1,10 @@
 // Simple command-line kernel monitor useful for
 // controlling the kernel and exploring the system interactively.
 
+#ifdef __SHARC__
+#pragma nosharc
+#endif
+
 #include <arch/arch.h>
 #include <stab.h>
 #include <smp.h>
@@ -41,6 +45,7 @@ static command_t commands[] = {
        { "kfs_ls", "List files in KFS", mon_kfs_ls},
        { "kfs_run", "Create and run a program from KFS", mon_kfs_run},
        { "manager", "Run the manager", mon_manager},
+       { "procinfo", "Show information about processes", mon_procinfo},
 };
 #define NCOMMANDS (sizeof(commands)/sizeof(commands[0]))
 
@@ -174,8 +179,6 @@ int mon_setmapperm(int argc, char **argv, trapframe_t *tf)
 
 int mon_cpuinfo(int argc, char **argv, trapframe_t *tf)
 {
-       extern uint8_t num_cpus;
-
        cprintf("Number of CPUs detected: %d\n", num_cpus);
        cprintf("Calling CPU's ID: 0x%08x\n", core_id());
 
@@ -261,6 +264,23 @@ int mon_kfs_run(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf)
        return 0;
 }
 
+int mon_procinfo(int argc, char *NTS *NT COUNT(argc) argv, trapframe_t *tf)
+{
+       if (argc != 2) {
+               printk("Usage: procinfo OPTION\n");
+               printk("\tidle_cores: show idle core map\n");
+               printk("\trunnable: show proc_runnablelist\n");
+               return 1;
+       }
+       if (!strcmp(argv[1], "idle_cores"))
+               print_idlecoremap();
+       else if (!strcmp(argv[1], "runnable"))
+               dump_proclist(&proc_runnablelist);
+       else
+               printk("Bad option\n");
+       return 0;
+}
+
 /***** Kernel monitor command interpreter *****/
 
 #define WHITESPACE "\t\r\n "