diff --git a/Kernel/Task.cpp b/Kernel/Task.cpp index 6c0ba1d43d..564ba726f9 100644 --- a/Kernel/Task.cpp +++ b/Kernel/Task.cpp @@ -497,6 +497,17 @@ bool scheduleNewTask() if (task == prevHead) { // Back at task_head, nothing wants to run. + kprintf("Nothing wants to run!\n"); + kprintf("PID OWNER STATE NSCHED NAME\n"); + for (auto* task = s_tasks->head(); task; task = task->next()) { + kprintf("%w %w:%w %b %w %s\n", + task->pid(), + task->uid(), + task->gid(), + task->state(), + task->timesScheduled(), + task->name().characters()); + } kprintf("Switch to kernel task\n"); return contextSwitch(Task::kernelTask()); } diff --git a/Kernel/kmalloc.cpp b/Kernel/kmalloc.cpp index b142a3f60e..dbd873836d 100644 --- a/Kernel/kmalloc.cpp +++ b/Kernel/kmalloc.cpp @@ -27,8 +27,8 @@ typedef struct PRIVATE BYTE alloc_map[POOL_SIZE / CHUNK_SIZE / 8]; -DWORD sum_alloc = 0; -DWORD sum_free = POOL_SIZE; +volatile DWORD sum_alloc = 0; +volatile DWORD sum_free = POOL_SIZE; static SpinLock s_kmallocLock; diff --git a/Kernel/kmalloc.h b/Kernel/kmalloc.h index b5f31046bc..3862b68aef 100644 --- a/Kernel/kmalloc.h +++ b/Kernel/kmalloc.h @@ -4,8 +4,8 @@ void kmalloc_init(); void *kmalloc(DWORD size) __attribute__ ((malloc)); void kfree(void*); -extern DWORD sum_alloc; -extern DWORD sum_free; +extern volatile DWORD sum_alloc; +extern volatile DWORD sum_free; inline void* operator new(size_t, void* p) { return p; } inline void* operator new[](size_t, void* p) { return p; }