diff --git a/Kernel/debug.c b/Kernel/debug.c index e799f00f60ad80820e7a761156482ff761d1ad9e..379f6767778c00ec7225048fa397b5d7befba3ab 100644 --- a/Kernel/debug.c +++ b/Kernel/debug.c @@ -213,7 +213,7 @@ void Panic(const char *Fmt, ...) Threads_Dump(); - for(;;) HALT(); + for(;;) ; } void Debug_SetKTerminal(const char *File) diff --git a/Kernel/syscalls.c b/Kernel/syscalls.c index e304b40e2a9c25a1b5fd0fddec6e820229b69b13..742b082a968540ad91864612dea2449d3ebb6bd0 100644 --- a/Kernel/syscalls.c +++ b/Kernel/syscalls.c @@ -68,6 +68,7 @@ void SyscallHandler(tSyscallRegs *Regs) case SYS_CLONE: // Call clone system call ret = Proc_Clone(Regs->Arg1); + Log("Proc_Clone returned %i", ret); // Change user stack if a new stack address is passed if(ret == 0 && Regs->Arg2) Regs->StackPointer = Regs->Arg2; diff --git a/Kernel/threads.c b/Kernel/threads.c index a81736b19bcfdee96eb17a8ce1b9fcec9f7010e4..f586f68a226bf9ccce84f75a9cc6388849684d79 100644 --- a/Kernel/threads.c +++ b/Kernel/threads.c @@ -124,6 +124,7 @@ void Threads_Init(void) Log_Debug("Threads", "Offsets of tThread"); Log_Debug("Threads", ".Priority = %i", offsetof(tThread, Priority)); + Log_Debug("Threads", ".KernelStack = %i", offsetof(tThread, KernelStack)); // Create Initial Task #if SCHEDULER_TYPE == SCHED_RR_PRI @@ -999,7 +1000,7 @@ void Threads_SegFault(tVAddr Addr) tThread *cur = Proc_GetCurThread(); cur->bInstrTrace = 0; Log_Warning("Threads", "Thread #%i committed a segfault at address %p", cur->TID, Addr); - MM_DumpTables(0, KERNEL_BASE); + MM_DumpTables(0, USER_MAX); Threads_Fault( 1 ); //Threads_Exit( 0, -1 ); } @@ -1292,7 +1293,7 @@ tThread *Threads_GetNextToRun(int CPU, tThread *Last) } // If we fall onto the same queue again, special handling is // needed - if( Last && i == Last->Priority ) { + if( Last && Last->Status == THREAD_STAT_ACTIVE && i == Last->Priority ) { tThread *savedThread = thread; // Find the next unscheduled thread in the list diff --git a/Kernel/vfs/mmap.c b/Kernel/vfs/mmap.c index 7b4d103b049ae8c0ff8b6704d35f960e3c728485..e3e6d94886f7a89590a930e21b3cb6caf3023b7a 100644 --- a/Kernel/vfs/mmap.c +++ b/Kernel/vfs/mmap.c @@ -130,6 +130,7 @@ void *VFS_MMap(void *DestHint, size_t Length, int Protection, int Flags, int FD, else { MM_Map( mapping_dest, pb->PhysAddrs[pagenum - pb->BaseOffset] ); + MM_RefPhys( pb->PhysAddrs[pagenum - pb->BaseOffset] ); LOG("Cached map %X to %p (%P)", pagenum*PAGE_SIZE, mapping_dest, pb->PhysAddrs[pagenum - pb->BaseOffset]); }