Eric, On 3/20/20 7:02 PM, Eric Rannaud wrote: > If clock_id is a valid clock on the system (i.e. it can be passed to > clock_gettime(2)), clock_settime(clock_id, &ts) sets errno to, either: > > - EINVAL if CONFIG_POSIX_TIMERS is not enabled (kernel/posix-stubs.c); > - EINVAL if CONFIG_POSIX_TIMERS is enabled (kernel/posix-timers.c) > and the k_clock has no set function (e.g. CLOCK_BOOTTIME); > - EACCES for dynamic posix clock devices that lack F_WRITE > (kernel/posix-time.c); > - EOPNOTSUPP for dynamic posix clock devices that have F_WRITE but > don't have a clock_settime op. > - EOPNOTSUPP for drivers/ptp/ptp_kvm.c (they provide a clock_settime > op that returns -EOPNOTSUPP directly, rather than opt to leave > clock_settime NULL which would do the same thing, see previous point). > > The manpage for clock_settime(2) is not very clear: > > EINVAL The clk_id specified is not supported on this system. > > EPERM clock_settime() does not have permission to set the clock indi‐ > cated. > > To me, the manpage reads like EPERM should be expected when trying to > set a clock that is not settable. > > Should we update the manpage to more fully explain the range of > possible errors or instead try to have more consistent errors? For > syscalls, what's the backward-compatibility contract for errno values? A man-pages patch would be most appropriate. Would you be able to put something together? Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/