Re: [PATCH] tools/nolibc: add support for clock_nanosleep() and nanosleep()
From: Willy Tarreau
Date: Sun Jul 06 2025 - 02:27:23 EST
Hi Thomas,
On Fri, Jul 04, 2025 at 04:19:48PM +0200, Thomas Weißschuh wrote:
> +static __attribute__((unused))
> +int sys_clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp,
> + struct timespec *rmtp)
> +{
> +#if defined(__NR_clock_nanosleep)
> + return my_syscall4(__NR_clock_nanosleep, clockid, flags, rqtp, rmtp);
> +#elif defined(__NR_clock_nanosleep_time64)
> + struct __kernel_timespec krqtp, krmtp;
> + int ret;
> +
> + __nolibc_timespec_user_to_kernel(rqtp, &krqtp);
> + ret = my_syscall4(__NR_clock_nanosleep_time64, clockid, flags, &krqtp, &krmtp);
> + if (rmtp)
> + __nolibc_timespec_kernel_to_user(&krmtp, rmtp);
> + return ret;
> +#else
> + return __nolibc_enosys(__func__, clockid, flags, rqtp, rmtp);
> +#endif
I don't know which archs do not have clock_nanosleep, but if it becomes
needed on some of them, we could probably fall back to pslelect() if
available, of course, and ignore the clockid.
Acked-by: Willy Tarreau <w@xxxxxx>
Cheers,
Willy