diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index 2da38b70b..333efbaaf 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -181,7 +181,7 @@ int nanosleep(const struct timespec *, struct timespec *) 162 int clock_gettime(clockid_t clk_id, struct timespec *tp) 263,265 int clock_settime(clockid_t clk_id, const struct timespec *tp) 262,264 int clock_getres(clockid_t clk_id, struct timespec *res) 264,266 -int clock_nanosleep(const struct timespec *req, struct timespec *rem) 265,267 +int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem) 265,267 int getitimer(int, const struct itimerval *) 105 int setitimer(int, const struct itimerval *, struct itimerval *) 104 int __timer_create:timer_create(clockid_t clockid, struct sigevent *evp, timer_t *timerid) 257,259 diff --git a/libc/arch-x86/syscalls/clock_nanosleep.S b/libc/arch-x86/syscalls/clock_nanosleep.S index c400e3ffe..23e1e6f04 100644 --- a/libc/arch-x86/syscalls/clock_nanosleep.S +++ b/libc/arch-x86/syscalls/clock_nanosleep.S @@ -9,8 +9,12 @@ clock_nanosleep: pushl %ebx pushl %ecx - mov 12(%esp), %ebx - mov 16(%esp), %ecx + pushl %edx + pushl %esi + mov 20(%esp), %ebx + mov 24(%esp), %ecx + mov 28(%esp), %edx + mov 32(%esp), %esi movl $__NR_clock_nanosleep, %eax int $0x80 cmpl $-129, %eax @@ -21,6 +25,8 @@ clock_nanosleep: addl $4, %esp orl $-1, %eax 1: + popl %esi + popl %edx popl %ecx popl %ebx ret diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h index d945d87b4..8422d7e6e 100644 --- a/libc/include/sys/linux-unistd.h +++ b/libc/include/sys/linux-unistd.h @@ -142,7 +142,7 @@ int nanosleep (const struct timespec *, struct timespec *); int clock_gettime (clockid_t clk_id, struct timespec *tp); int clock_settime (clockid_t clk_id, const struct timespec *tp); int clock_getres (clockid_t clk_id, struct timespec *res); -int clock_nanosleep (const struct timespec *req, struct timespec *rem); +int clock_nanosleep (clockid_t clock_id, int flags, const struct timespec *req, struct timespec *rem); int getitimer (int, const struct itimerval *); int setitimer (int, const struct itimerval *, struct itimerval *); int __timer_create (clockid_t clockid, struct sigevent *evp, timer_t *timerid);