diff options
author | Ben Wiederhake <BenWiederhake.GitHub@gmx.de> | 2020-05-11 14:50:21 +0200 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-07-25 20:21:25 +0200 |
commit | d8c8820ee922c2ee89d11963c96f312c5fe6be87 (patch) | |
tree | f9acc207c3d89c7ee087934d9c2c18247ad242b3 /Kernel/Thread.cpp | |
parent | 76c135ddcf7853df9d559cb0ebc774c73bed44f5 (diff) | |
download | serenity-d8c8820ee922c2ee89d11963c96f312c5fe6be87.zip |
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.
Diffstat (limited to 'Kernel/Thread.cpp')
-rw-r--r-- | Kernel/Thread.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index 01842b06b4..f9044109f4 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -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; |