diff --git a/Kernel/FileSystem/ProcFS.cpp b/Kernel/FileSystem/ProcFS.cpp index 8bedb9f40f..7df1e4096c 100644 --- a/Kernel/FileSystem/ProcFS.cpp +++ b/Kernel/FileSystem/ProcFS.cpp @@ -1,7 +1,6 @@ #include "ProcFS.h" #include "Process.h" #include -#include "system.h" #include #include "StdLib.h" #include "i386.h" diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 324d15a7b4..782e618aba 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -3,7 +3,6 @@ #include "kmalloc.h" #include "StdLib.h" #include "i386.h" -#include "system.h" #include #include #include @@ -1190,9 +1189,9 @@ int Process::sys$usleep(useconds_t usec) return 0; current->sleep(usec / 1000); - if (current->m_wakeup_time > system.uptime) { + if (current->m_wakeup_time > g_uptime) { ASSERT(current->m_was_interrupted_while_blocked); - dword ticks_left_until_original_wakeup_time = current->m_wakeup_time - system.uptime; + dword ticks_left_until_original_wakeup_time = current->m_wakeup_time - g_uptime; return ticks_left_until_original_wakeup_time / TICKS_PER_SECOND; } return 0; @@ -1203,9 +1202,9 @@ int Process::sys$sleep(unsigned seconds) if (!seconds) return 0; current->sleep(seconds * TICKS_PER_SECOND); - if (current->m_wakeup_time > system.uptime) { + if (current->m_wakeup_time > g_uptime) { ASSERT(current->m_was_interrupted_while_blocked); - dword ticks_left_until_original_wakeup_time = current->m_wakeup_time - system.uptime; + dword ticks_left_until_original_wakeup_time = current->m_wakeup_time - g_uptime; return ticks_left_until_original_wakeup_time / TICKS_PER_SECOND; } return 0; diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 8acf886e5a..a6d04b8fd2 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -1,6 +1,5 @@ #include "Scheduler.h" #include "Process.h" -#include "system.h" #include "RTC.h" #include "i8253.h" #include @@ -27,6 +26,7 @@ Thread* current; Thread* g_last_fpu_thread; Thread* g_finalizer; static Process* s_colonel_process; +qword g_uptime; struct TaskRedirectionData { word selector; @@ -65,7 +65,7 @@ bool Scheduler::pick_next() auto& process = thread.process(); if (thread.state() == Thread::BlockedSleep) { - if (thread.wakeup_time() <= system.uptime) + if (thread.wakeup_time() <= g_uptime) thread.unblock(); return IterationDecision::Continue; } @@ -391,7 +391,7 @@ void Scheduler::timer_tick(RegisterDump& regs) if (!current) return; - system.uptime++; + ++g_uptime; if (current->tick()) return; diff --git a/Kernel/Scheduler.h b/Kernel/Scheduler.h index 04c80e6bd8..6ea5d5bcfa 100644 --- a/Kernel/Scheduler.h +++ b/Kernel/Scheduler.h @@ -1,6 +1,7 @@ #pragma once #include +#include class Process; class Thread; @@ -9,6 +10,7 @@ struct RegisterDump; extern Thread* current; extern Thread* g_last_fpu_thread; extern Thread* g_finalizer; +extern qword g_uptime; class Scheduler { public: diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 48823f94cb..fdafbbc528 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include @@ -125,7 +124,7 @@ void Thread::block(Thread::State new_state) void Thread::sleep(dword ticks) { ASSERT(state() == Thread::Running); - current->set_wakeup_time(system.uptime + ticks); + current->set_wakeup_time(g_uptime + ticks); current->block(Thread::BlockedSleep); } diff --git a/Kernel/Thread.h b/Kernel/Thread.h index e6a0b99c81..98c3d8b4b9 100644 --- a/Kernel/Thread.h +++ b/Kernel/Thread.h @@ -89,8 +89,8 @@ public: void block(Thread::State); void unblock(); - void set_wakeup_time(dword t) { m_wakeup_time = t; } - dword wakeup_time() const { return m_wakeup_time; } + void set_wakeup_time(qword t) { m_wakeup_time = t; } + qword wakeup_time() const { return m_wakeup_time; } void snooze_until(Alarm&); KResult wait_for_connect(Socket&); @@ -144,7 +144,7 @@ private: dword m_ticks_left { 0 }; dword m_stack_top0 { 0 }; dword m_stack_top3 { 0 }; - dword m_wakeup_time { 0 }; + qword m_wakeup_time { 0 }; dword m_times_scheduled { 0 }; dword m_pending_signals { 0 }; dword m_signal_mask { 0 }; diff --git a/Kernel/init.cpp b/Kernel/init.cpp index 4989d2331a..ea74bdc741 100644 --- a/Kernel/init.cpp +++ b/Kernel/init.cpp @@ -4,7 +4,6 @@ #include "i8253.h" #include #include "Process.h" -#include "system.h" #include "PIC.h" #include #include "KSyms.h" @@ -37,8 +36,6 @@ //#define SPAWN_MULTIPLE_SHELLS //#define STRESS_TEST_SPAWNING -system_t system; - VirtualConsole* tty0; VirtualConsole* tty1; VirtualConsole* tty2; diff --git a/Kernel/system.h b/Kernel/system.h deleted file mode 100644 index 76ba1f5630..0000000000 --- a/Kernel/system.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include - -struct system_t -{ - time_t uptime; -}; - -extern system_t system;