Re: clock_settime(2) error for non-settable clocks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux