IRQ_GETSTATE(): New macro; Rename IRQ macros for consistency.
[bertos.git] / kern / proc.c
index e0c2ba27858af55069edcde9211e6c90268815ee..db3cf50dab18236ab964aec533ce10ff0b7925fc 100755 (executable)
  * \author Stefano Fedrigo <aleph@develer.com>
  */
 
-/*
- * $Log$
- * Revision 1.8  2004/08/14 19:37:57  rasky
- * Merge da SC: macros.h, pool.h, BIT_CHANGE, nome dei processi, etc.
- *
- * Revision 1.7  2004/08/02 20:20:29  aleph
- * Merge from project_ks
- *
- * Revision 1.6  2004/07/30 14:24:16  rasky
- * Task switching con salvataggio perfetto stato di interrupt (SR)
- * Kernel monitor per dump informazioni su stack dei processi
- *
- * Revision 1.5  2004/07/14 14:18:09  rasky
- * Merge da SC: Rimosso timer dentro il task, che è uno spreco di memoria per troppi task
- *
- * Revision 1.4  2004/07/13 19:21:28  aleph
- * Avoid warning for unused arg when compiled without some CONFIG_KERN_xx options
- *
- * Revision 1.3  2004/06/06 18:37:57  bernie
- * Rename event macros to look like regular functions.
- *
- * Revision 1.2  2004/06/03 11:27:09  bernie
- * Add dual-license information.
- *
- * Revision 1.1  2004/05/23 17:27:00  bernie
- * Import kern/ subdirectory.
- *
- */
+/*#*
+ *#* $Log$
+ *#* Revision 1.15  2004/09/20 03:29:39  bernie
+ *#* C++ fixes.
+ *#*
+ *#* Revision 1.14  2004/09/14 21:06:44  bernie
+ *#* Use debug.h instead of kdebug.h.
+ *#*
+ *#* Revision 1.13  2004/08/29 21:58:53  bernie
+ *#* Include macros.h explicityl.
+ *#*
+ *#* Revision 1.11  2004/08/24 16:09:08  bernie
+ *#* Add missing header.
+ *#*
+ *#* Revision 1.10  2004/08/24 16:07:01  bernie
+ *#* Use kputs()/kputchar() when possible.
+ *#*
+ *#* Revision 1.9  2004/08/24 14:26:57  bernie
+ *#* monitor_debug_stacks(): Conditionally compile on CONFIG_KERN_MONITOR.
+ *#*
+ *#* Revision 1.8  2004/08/14 19:37:57  rasky
+ *#* Merge da SC: macros.h, pool.h, BIT_CHANGE, nome dei processi, etc.
+ *#*
+ *#* Revision 1.7  2004/08/02 20:20:29  aleph
+ *#* Merge from project_ks
+ *#*
+ *#* Revision 1.6  2004/07/30 14:24:16  rasky
+ *#* Task switching con salvataggio perfetto stato di interrupt (SR)
+ *#* Kernel monitor per dump informazioni su stack dei processi
+ *#*
+ *#* Revision 1.5  2004/07/14 14:18:09  rasky
+ *#* Merge da SC: Rimosso timer dentro il task, che è uno spreco di memoria per troppi task
+ *#*
+ *#* Revision 1.4  2004/07/13 19:21:28  aleph
+ *#* Avoid warning for unused arg when compiled without some CONFIG_KERN_xx options
+ *#*
+ *#* Revision 1.3  2004/06/06 18:37:57  bernie
+ *#* Rename event macros to look like regular functions.
+ *#*
+ *#* Revision 1.2  2004/06/03 11:27:09  bernie
+ *#* Add dual-license information.
+ *#*
+ *#* Revision 1.1  2004/05/23 17:27:00  bernie
+ *#* Import kern/ subdirectory.
+ *#*
+ *#*/
 
-#include "cpu.h"
 #include "proc_p.h"
 #include "proc.h"
+#include "cpu.h"
 #include "event.h"
 #include "hw.h"
-#include <drv/kdebug.h>
+#include <debug.h>
+#include <arch_config.h>  /* ARCH_EMUL */
+#include <macros.h>  /* ABS() */
 
 #include <string.h> /* memset() */
 
-/*! CPU dependent context switching routines
- *  \note This function *MUST* preserve also the status of the interrupts.
+/*!
+ * CPU dependent context switching routines.
+ *
+ * \note This function *MUST* preserve also the status of the interrupts.
  */
-extern void asm_switch_context(cpustack_t **new_sp, cpustack_t **save_sp);
-extern int asm_switch_version(void);
+EXTERN_C void asm_switch_context(cpustack_t **new_sp, cpustack_t **save_sp);
+EXTERN_C int asm_switch_version(void);
 
 /*
  * The scheduer tracks ready and waiting processes
@@ -146,6 +168,8 @@ size_t monitor_check_stack(cpustack_t* stack_base, size_t stack_size)
        return sp_free;
 }
 
+#if CONFIG_KERN_MONITOR
+
 void monitor_debug_stacks(void)
 {
        struct Process* p;
@@ -153,14 +177,14 @@ void monitor_debug_stacks(void)
 
        if (ISLISTEMPTY(&MonitorProcs))
        {
-               kprintf("No stacks registered in the monitor\n");
+               kputs("No stacks registered in the monitor\n");
                return;
        }
 
        kprintf("%-24s    %-6s%-8s%-8s%-8s\n", "Process name", "TCB", "SPbase", "SPsize", "SPfree");
        for (i=0;i<56;i++)
-               kprintf("-");
-       kprintf("\n");
+               kputchar('-');
+       kputchar('\n');
 
        for (p = MONITOR_NODE_TO_PROCESS(MonitorProcs.head);
                 p->monitor.link.succ;
@@ -171,6 +195,8 @@ void monitor_debug_stacks(void)
        }
 }
 
+#endif /* CONFIG_KERN_MONITOR */
+
 #endif