Update for new emulator.
authorbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 24 Feb 2006 01:17:44 +0000 (01:17 +0000)
committerbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Fri, 24 Feb 2006 01:17:44 +0000 (01:17 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@555 38d2e660-2303-0410-9eaa-f027e97ec537

kern/monitor.c
kern/monitor.h
kern/proc.c
kern/sem.c
kern/signal.c
kern/switch_dsp56k.c
kern/switch_x86_64.s
mware/event.h

index a64fceb25874f3843334b48ac3bcfa5fea1e8eff..babdb72fc8c559cc2dd9e0d763bd95f751d40644 100755 (executable)
@@ -14,6 +14,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.6  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.5  2005/11/04 16:20:02  bernie
  *#* Fix reference to README.devlib in header.
  *#*
@@ -79,9 +82,9 @@ void monitor_rename(Process *proc, const char* name)
 }
 
 #define MONITOR_NODE_TO_PROCESS(node) \
-       (struct Process*)((char*)(node) - offsetof(struct Process, monitor.link))
+       (struct Process *)((char *)(node) - offsetof(struct Process, monitor.link))
 
-size_t monitor_check_stack(cpustack_t* stack_base, size_t stack_size)
+size_t monitor_checkStack(cpustack_t* stack_base, size_t stack_size)
 {
        cpustack_t* beg;
        cpustack_t* cur;
@@ -120,38 +123,39 @@ void monitor_report(void)
        struct Process* p;
        int i;
 
-       if (ISLISTEMPTY(&MonitorProcs))
+       if (LIST_EMPTY(&MonitorProcs))
        {
                kputs("No stacks registered in the monitor\n");
                return;
        }
 
-       kprintf("%-24s    %-6s%-8s%-8s%-8s\n", "Process name", "TCB", "SPbase", "SPsize", "SPfree");
+       kprintf("%-24s%-8s%-8s%-8s%-8s\n", "Process name", "TCB", "SPbase", "SPsize", "SPfree");
        for (i=0;i<56;i++)
                kputchar('-');
        kputchar('\n');
 
-       for (p = MONITOR_NODE_TO_PROCESS(MonitorProcs.head);
+       for (p = MONITOR_NODE_TO_PROCESS(LIST_HEAD(&MonitorProcs));
                 p->monitor.link.succ;
                 p = MONITOR_NODE_TO_PROCESS(p->monitor.link.succ))
        {
-               size_t free = monitor_check_stack(p->monitor.stack_base, p->monitor.stack_size);
-               kprintf("%-24s    %04x    %04x    %4x    %4x\n", p->monitor.name, (uint16_t)p, (uint16_t)p->monitor.stack_base, (uint16_t)p->monitor.stack_size, (uint16_t)free);
+               size_t free = monitor_checkStack(p->monitor.stack_base, p->monitor.stack_size);
+               kprintf("%-24s%8p%8p%8lx%8lx\n",
+                       p->monitor.name, p, p->monitor.stack_base, p->monitor.stack_size, free);
        }
 }
 
 
-static void monitor(void)
+static void NORETURN monitor(void)
 {
        struct Process* p;
 
        while (1)
        {
-               for (p = MONITOR_NODE_TO_PROCESS(MonitorProcs.head);
+               for (p = MONITOR_NODE_TO_PROCESS(LIST_HEAD(&MonitorProcs));
                        p->monitor.link.succ;
                        p = MONITOR_NODE_TO_PROCESS(p->monitor.link.succ))
                {
-                       size_t free = monitor_check_stack(p->monitor.stack_base, p->monitor.stack_size);
+                       size_t free = monitor_checkStack(p->monitor.stack_base, p->monitor.stack_size);
 
                        if (free < 0x20)
                        {
index 352d83b758b456e9f9252a7747c595e25157006b..3703641fe66d14bb72ee7c71dbb8768cf2328b2a 100755 (executable)
@@ -14,6 +14,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.4  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.3  2005/11/04 16:20:02  bernie
  *#* Fix reference to README.devlib in header.
  *#*
@@ -33,7 +36,7 @@
 #define KERN_MONITOR_H
 
 #include <cfg/cpu.h>
-#include <cfg/config_kern.h>
+#include <config_kern.h>
 
 #if CONFIG_KERN_MONITOR
 
@@ -58,7 +61,7 @@ void monitor_start(size_t stacksize, cpustack_t *stack);
  * \note For this function to work, the stack must have been filled at startup with
  * CONFIG_KERN_STACKFILLCODE.
  */
-size_t monitor_check_stack(cpustack_t* stack_base, size_t stack_size);
+size_t monitor_checkStack(cpustack_t *stack_base, size_t stack_size);
 
 
 /*! Print a report of the stack status through kdebug */
index 24f93d481a20a74870fc5e3163ba3946a701b023..495ca735e5d2cedc650eedb4a848fb53b622e1ee 100755 (executable)
@@ -17,6 +17,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.29  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.28  2006/02/21 16:06:55  bernie
  *#* Cleanup/update process scheduling.
  *#*
@@ -308,12 +311,14 @@ void proc_schedule(void)
        /* Remember old process to save its context later */
        old_process = CurrentProcess;
 
+#ifdef IRQ_RUNNING
        /* Scheduling in interrupts is a nono. */
        ASSERT(!IRQ_RUNNING());
+#endif
 
        /* Poll on the ready queue for the first ready process */
        IRQ_SAVE_DISABLE(flags);
-       while (!(CurrentProcess = (struct Process *)REMHEAD(&ProcReadyList)))
+       while (!(CurrentProcess = (struct Process *)list_remHead(&ProcReadyList)))
        {
                /*
                 * Make sure we physically reenable interrupts here, no matter what
index 6f1a773f23493e333ee31cde3fb48d598ca29a33..7b3b472965999f53b13ac200af5ac1260ceed101 100755 (executable)
@@ -15,6 +15,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.11  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.10  2005/11/04 16:20:02  bernie
  *#* Fix reference to README.devlib in header.
  *#*
  *#*/
 
 #include "sem.h"
-#include "proc.h"
-#include "proc_p.h"
-#include "signal.h"
-#include "hw.h"
+#include <kern/proc.h>
+#include <kern/proc_p.h>
+#include <kern/signal.h>
 #include <cfg/debug.h>
 
 INLINE void sem_verify(struct Semaphore *s)
@@ -139,7 +141,7 @@ void sem_obtain(struct Semaphore *s)
        }
        else
        {
-               ASSERT(ISLISTEMPTY(&s->wait_queue));
+               ASSERT(LIST_EMPTY(&s->wait_queue));
 
                /* The semaphore was free: lock it */
                s->owner = CurrentProcess;
@@ -181,7 +183,7 @@ void sem_release(struct Semaphore *s)
                s->owner = NULL;
 
                /* Give semaphore to the first applicant, if any */
-               if (UNLIKELY((proc = (Process *)REMHEAD(&s->wait_queue))))
+               if (UNLIKELY((proc = (Process *)list_remHead(&s->wait_queue))))
                {
                        s->nest_count = 1;
                        s->owner = proc;
index e4e0522a1bd3c36a019b00dd94a91d9fabdc9eb4..841ac6eb9d37c0a00135aecfb2efa39b2e2fe125 100755 (executable)
@@ -66,6 +66,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.13  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.12  2005/11/04 16:20:02  bernie
  *#* Fix reference to README.devlib in header.
  *#*
  *#*/
 
 #include "signal.h"
-#include "proc.h"
-#include "proc_p.h"
-#include "hw.h"
+
+#include <kern/proc.h>
+#include <kern/proc_p.h>
 #include <cfg/debug.h>
 
 #if CONFIG_KERN_SIGNALS
index 988fb13890d6e919d53ebc60fba50e162b323d79..59f9788ffdbbe8966f6360b5ff0c180fa4fe9cf1 100755 (executable)
@@ -14,6 +14,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.6  2006/02/24 01:17:05  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.5  2005/11/04 16:20:02  bernie
  *#* Fix reference to README.devlib in header.
  *#*
@@ -63,8 +66,8 @@ asm void asm_switch_context(void ** new_sp, void ** save_sp)
        move  y1,x:(SP)+
        move  x:<$3F,y1
        move  y1,x:(SP)
-       
-       ; 
+
+       ;
        ; Switch stacks
        nop
        move SP, x:(R3)
index 60a31e286b6bd50db1adb04ddd12fbe0fec62b12..339c66762d0fddad1fc0dbea627f356ef689a0c4 100755 (executable)
@@ -15,6 +15,9 @@
 
 /*
  * $Log$
+ * Revision 1.2  2006/02/24 01:17:05  bernie
+ * Update for new emulator.
+ *
  * Revision 1.1  2005/11/27 03:06:15  bernie
  * Add x86_64 task switching (to be updated to new-style scheduler).
  *
  *
  */
 
-!!!!!! THIS FILE HAS NOT BEEN REVISED FOR THE NEW SCHEDULER API !!!!!!
-
 /* I know it's ugly... */
 #.intel_syntax
 
-/* void AsmSwitchContext(void * new_sp, void ** save_sp) */
+/* void AsmSwitchContext(void **new_sp, void **save_sp) */
+/*                       %rdi           %rsi
 .globl AsmSwitchContext
 AsmSwitchContext:
        pushq   %rax
@@ -45,7 +47,7 @@ AsmSwitchContext:
        pushq   %rdi
        pushq   %rbp
        movq    %rsp,(%rsi)             /* *save_sp = rsp */
-       movq    %rdi,%rsp               /* rsp = new_sp */
+       movq    (%rdi),%rsp             /* rsp = *new_sp */
        popq    %rbp
        popq    %rdi
        popq    %rsi
@@ -55,16 +57,9 @@ AsmSwitchContext:
        popq    %rax
        ret
 
-/* void AsmReplaceContext(void * new_sp, void ** dummy) */
-.globl AsmReplaceContext
-AsmReplaceContext:
-       movq    %rdi,%rsp                /* rsp = new_sp */
-       popq    %rbp
-       popq    %rdi
-       popq    %rsi
-       popq    %rdx
-       popq    %rcx
-       popq    %rbx
-       popq    %rax
+/* int asm_switch_version(void) */
+.globl asm_switch_version
+asm_switch_version:
+       mov     $1,%rax
        ret
 
index 23c1e9b8daf9e55aa76e028cc6880e3034bff5c9..259813807fa864cd2629368dc3159bc15074b967 100755 (executable)
@@ -18,6 +18,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.6  2006/02/24 01:17:44  bernie
+ *#* Update for new emulator.
+ *#*
  *#* Revision 1.5  2006/02/24 00:26:21  bernie
  *#* Fix header name.
  *#*
@@ -77,7 +80,7 @@
 #if CONFIG_KERNEL
        #include <config_kern.h>
        #if defined(CONFIG_KERN_SIGNALS) && CONFIG_KERN_SIGNALS
-               #include "signal.h"
+               #include <kern/signal.h>
        #endif
 #endif