Kernel: Use Userspace<T> for the clock_nanosleep syscall

This commit is contained in:
Brian Gianforcaro 2020-08-04 22:24:45 -07:00 committed by Andreas Kling
parent baa070afb8
commit 84035e1035
Notes: sideshowbarker 2024-07-19 04:18:11 +09:00
3 changed files with 5 additions and 6 deletions

View file

@ -282,8 +282,8 @@ struct SC_poll_params {
struct SC_clock_nanosleep_params {
int clock_id;
int flags;
const struct timespec* requested_sleep;
struct timespec* remaining_sleep;
Userspace<const struct timespec*> requested_sleep;
Userspace<struct timespec*> remaining_sleep;
};
struct SC_sendto_params {

View file

@ -241,7 +241,7 @@ public:
int sys$gettimeofday(Userspace<timeval*>);
int sys$clock_gettime(clockid_t, timespec*);
int sys$clock_settime(clockid_t, timespec*);
int sys$clock_nanosleep(const Syscall::SC_clock_nanosleep_params*);
int sys$clock_nanosleep(Userspace<const Syscall::SC_clock_nanosleep_params*>);
int sys$gethostname(char*, ssize_t);
int sys$sethostname(const char*, ssize_t);
int sys$uname(utsname*);

View file

@ -76,7 +76,7 @@ int Process::sys$clock_settime(clockid_t clock_id, timespec* user_ts)
return 0;
}
int Process::sys$clock_nanosleep(const Syscall::SC_clock_nanosleep_params* user_params)
int Process::sys$clock_nanosleep(Userspace<const Syscall::SC_clock_nanosleep_params*> user_params)
{
REQUIRE_PROMISE(stdio);
@ -118,8 +118,7 @@ int Process::sys$clock_nanosleep(const Syscall::SC_clock_nanosleep_params* user_
return -EFAULT;
}
timespec remaining_sleep;
memset(&remaining_sleep, 0, sizeof(timespec));
timespec remaining_sleep = {};
remaining_sleep.tv_sec = ticks_left / TimeManagement::the().ticks_per_second();
ticks_left -= remaining_sleep.tv_sec * TimeManagement::the().ticks_per_second();
remaining_sleep.tv_nsec = ticks_left * 1000000000 / TimeManagement::the().ticks_per_second();