mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 23:50:19 +00:00
Kernel: Remove system.h and make the uptime global a qword.
This commit is contained in:
parent
c09c114d77
commit
29d0412a06
Notes:
sideshowbarker
2024-07-19 14:43:46 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/29d0412a06a
8 changed files with 13 additions and 27 deletions
|
@ -1,7 +1,6 @@
|
||||||
#include "ProcFS.h"
|
#include "ProcFS.h"
|
||||||
#include "Process.h"
|
#include "Process.h"
|
||||||
#include <Kernel/FileSystem/VirtualFileSystem.h>
|
#include <Kernel/FileSystem/VirtualFileSystem.h>
|
||||||
#include "system.h"
|
|
||||||
#include <Kernel/VM/MemoryManager.h>
|
#include <Kernel/VM/MemoryManager.h>
|
||||||
#include "StdLib.h"
|
#include "StdLib.h"
|
||||||
#include "i386.h"
|
#include "i386.h"
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#include "kmalloc.h"
|
#include "kmalloc.h"
|
||||||
#include "StdLib.h"
|
#include "StdLib.h"
|
||||||
#include "i386.h"
|
#include "i386.h"
|
||||||
#include "system.h"
|
|
||||||
#include <Kernel/FileSystem/FileDescriptor.h>
|
#include <Kernel/FileSystem/FileDescriptor.h>
|
||||||
#include <Kernel/FileSystem/VirtualFileSystem.h>
|
#include <Kernel/FileSystem/VirtualFileSystem.h>
|
||||||
#include <Kernel/Devices/NullDevice.h>
|
#include <Kernel/Devices/NullDevice.h>
|
||||||
|
@ -1190,9 +1189,9 @@ int Process::sys$usleep(useconds_t usec)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
current->sleep(usec / 1000);
|
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);
|
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 ticks_left_until_original_wakeup_time / TICKS_PER_SECOND;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1203,9 +1202,9 @@ int Process::sys$sleep(unsigned seconds)
|
||||||
if (!seconds)
|
if (!seconds)
|
||||||
return 0;
|
return 0;
|
||||||
current->sleep(seconds * TICKS_PER_SECOND);
|
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);
|
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 ticks_left_until_original_wakeup_time / TICKS_PER_SECOND;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#include "Scheduler.h"
|
#include "Scheduler.h"
|
||||||
#include "Process.h"
|
#include "Process.h"
|
||||||
#include "system.h"
|
|
||||||
#include "RTC.h"
|
#include "RTC.h"
|
||||||
#include "i8253.h"
|
#include "i8253.h"
|
||||||
#include <AK/TemporaryChange.h>
|
#include <AK/TemporaryChange.h>
|
||||||
|
@ -27,6 +26,7 @@ Thread* current;
|
||||||
Thread* g_last_fpu_thread;
|
Thread* g_last_fpu_thread;
|
||||||
Thread* g_finalizer;
|
Thread* g_finalizer;
|
||||||
static Process* s_colonel_process;
|
static Process* s_colonel_process;
|
||||||
|
qword g_uptime;
|
||||||
|
|
||||||
struct TaskRedirectionData {
|
struct TaskRedirectionData {
|
||||||
word selector;
|
word selector;
|
||||||
|
@ -65,7 +65,7 @@ bool Scheduler::pick_next()
|
||||||
auto& process = thread.process();
|
auto& process = thread.process();
|
||||||
|
|
||||||
if (thread.state() == Thread::BlockedSleep) {
|
if (thread.state() == Thread::BlockedSleep) {
|
||||||
if (thread.wakeup_time() <= system.uptime)
|
if (thread.wakeup_time() <= g_uptime)
|
||||||
thread.unblock();
|
thread.unblock();
|
||||||
return IterationDecision::Continue;
|
return IterationDecision::Continue;
|
||||||
}
|
}
|
||||||
|
@ -391,7 +391,7 @@ void Scheduler::timer_tick(RegisterDump& regs)
|
||||||
if (!current)
|
if (!current)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
system.uptime++;
|
++g_uptime;
|
||||||
|
|
||||||
if (current->tick())
|
if (current->tick())
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <AK/Assertions.h>
|
#include <AK/Assertions.h>
|
||||||
|
#include <AK/Types.h>
|
||||||
|
|
||||||
class Process;
|
class Process;
|
||||||
class Thread;
|
class Thread;
|
||||||
|
@ -9,6 +10,7 @@ struct RegisterDump;
|
||||||
extern Thread* current;
|
extern Thread* current;
|
||||||
extern Thread* g_last_fpu_thread;
|
extern Thread* g_last_fpu_thread;
|
||||||
extern Thread* g_finalizer;
|
extern Thread* g_finalizer;
|
||||||
|
extern qword g_uptime;
|
||||||
|
|
||||||
class Scheduler {
|
class Scheduler {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
#include <Kernel/Thread.h>
|
#include <Kernel/Thread.h>
|
||||||
#include <Kernel/Scheduler.h>
|
#include <Kernel/Scheduler.h>
|
||||||
#include <Kernel/system.h>
|
|
||||||
#include <Kernel/Process.h>
|
#include <Kernel/Process.h>
|
||||||
#include <Kernel/VM/MemoryManager.h>
|
#include <Kernel/VM/MemoryManager.h>
|
||||||
#include <LibC/signal_numbers.h>
|
#include <LibC/signal_numbers.h>
|
||||||
|
@ -125,7 +124,7 @@ void Thread::block(Thread::State new_state)
|
||||||
void Thread::sleep(dword ticks)
|
void Thread::sleep(dword ticks)
|
||||||
{
|
{
|
||||||
ASSERT(state() == Thread::Running);
|
ASSERT(state() == Thread::Running);
|
||||||
current->set_wakeup_time(system.uptime + ticks);
|
current->set_wakeup_time(g_uptime + ticks);
|
||||||
current->block(Thread::BlockedSleep);
|
current->block(Thread::BlockedSleep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -89,8 +89,8 @@ public:
|
||||||
void block(Thread::State);
|
void block(Thread::State);
|
||||||
void unblock();
|
void unblock();
|
||||||
|
|
||||||
void set_wakeup_time(dword t) { m_wakeup_time = t; }
|
void set_wakeup_time(qword t) { m_wakeup_time = t; }
|
||||||
dword wakeup_time() const { return m_wakeup_time; }
|
qword wakeup_time() const { return m_wakeup_time; }
|
||||||
void snooze_until(Alarm&);
|
void snooze_until(Alarm&);
|
||||||
KResult wait_for_connect(Socket&);
|
KResult wait_for_connect(Socket&);
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ private:
|
||||||
dword m_ticks_left { 0 };
|
dword m_ticks_left { 0 };
|
||||||
dword m_stack_top0 { 0 };
|
dword m_stack_top0 { 0 };
|
||||||
dword m_stack_top3 { 0 };
|
dword m_stack_top3 { 0 };
|
||||||
dword m_wakeup_time { 0 };
|
qword m_wakeup_time { 0 };
|
||||||
dword m_times_scheduled { 0 };
|
dword m_times_scheduled { 0 };
|
||||||
dword m_pending_signals { 0 };
|
dword m_pending_signals { 0 };
|
||||||
dword m_signal_mask { 0 };
|
dword m_signal_mask { 0 };
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
#include "i8253.h"
|
#include "i8253.h"
|
||||||
#include <Kernel/Devices/KeyboardDevice.h>
|
#include <Kernel/Devices/KeyboardDevice.h>
|
||||||
#include "Process.h"
|
#include "Process.h"
|
||||||
#include "system.h"
|
|
||||||
#include "PIC.h"
|
#include "PIC.h"
|
||||||
#include <Kernel/Devices/IDEDiskDevice.h>
|
#include <Kernel/Devices/IDEDiskDevice.h>
|
||||||
#include "KSyms.h"
|
#include "KSyms.h"
|
||||||
|
@ -37,8 +36,6 @@
|
||||||
//#define SPAWN_MULTIPLE_SHELLS
|
//#define SPAWN_MULTIPLE_SHELLS
|
||||||
//#define STRESS_TEST_SPAWNING
|
//#define STRESS_TEST_SPAWNING
|
||||||
|
|
||||||
system_t system;
|
|
||||||
|
|
||||||
VirtualConsole* tty0;
|
VirtualConsole* tty0;
|
||||||
VirtualConsole* tty1;
|
VirtualConsole* tty1;
|
||||||
VirtualConsole* tty2;
|
VirtualConsole* tty2;
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <AK/Types.h>
|
|
||||||
|
|
||||||
struct system_t
|
|
||||||
{
|
|
||||||
time_t uptime;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern system_t system;
|
|
Loading…
Reference in a new issue