1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 17:15:09 +00:00

Kernel: Allow Thread::sleep for more than 388 days

Because Thread::sleep is an internal interface, it's easy to check that there
are only few callers: Process::sys$sleep, usleep, and nanosleep are happy
with this increased size, because now they support the entire range of their
arguments (assuming small-ish values for ticks_per_second()).
SyncTask doesn't care.

Note that the old behavior wasn't "cap out at 388 days", which would have been
reasonable. Instead, the code resulted in unsigned overflow, meaning that a
very long sleep would "on average" end after about 194 days, sometimes much
quicker.
This commit is contained in:
Ben Wiederhake 2020-05-11 14:50:21 +02:00 committed by Andreas Kling
parent 76c135ddcf
commit d8c8820ee9
2 changed files with 2 additions and 2 deletions

View file

@ -220,7 +220,7 @@ void Thread::relock_process(bool did_unlock)
process().big_lock().lock();
}
u64 Thread::sleep(u32 ticks)
u64 Thread::sleep(u64 ticks)
{
ASSERT(state() == Thread::Running);
u64 wakeup_time = g_uptime + ticks;