Hi ChengDong,


were you able to check my error message? 
How can we solve the problem?

BR,

Mathias




chengdong wang schrieb am 06.02.2026 02:28 (GMT +01:00):

> OK, I will take a look at this as soon as possible
> 
> BR,
> ChengDong
> 
> Alan C. Assis <[email protected]> 于2026年2月6日周五 00:50写道:
> 
>> Hi Mathias,
>>
>> Thank you for finding and reporting this issue. I'm CC Chengdong here.
>>
>> Chengdong, could you please take a look at this issue?
>>
>> BR,
>>
>> Alan
>>
>> On Thu, Feb 5, 2026 at 12:32 PM <[email protected]> wrote:
>>
>> >
>> > Hello,
>> >
>> > I have problems with the following commit, which is part of PR #17199
>> >
>> >    commit c7b6442974545b92476615ef048633609d828e5b
>> >    Author: wangchengdong <[email protected]>
>> >    Date: Mon Oct 13 20:57:43 2025 +0800
>> >    sched/clock: Improve CLOCK_MONOTONIC nxclock_gettime()
>> >
>> >    Improve nxclock_gettime(), to get the system time excluding
>> >    the time that the system is suspended, when the clockid is
>> >    CLOCK_MONOTONIC
>> >
>> >    Signed-off-by: Chengdong Wang [email protected]
>> >
>> >
>> >
>> > This commit changes the behaviour of CLOCK_MONOTONIC. It is running
>> slower
>> > than CLOCK_BOOTTIME now.
>> >
>> > I called sem_clockwait() with CLOCK_MONOTONIC, but the "if" in line 143
>> in
>> > nuttx/sched/semaphore/sem_clockwait.c handles on two cases. I used
>> > CLOCK_MONOTONIC to calculate the value "abstime", but wd_start_abstime()
>> > uses CLOCK_BOOTTIME now. When the system in running for some time this
>> > leads to an immediate timeout, because two different clocks are compared.
>> >
>> >
>> > int nxsem_clockwait(FAR sem_t *sem, clockid_t clockid,
>> >                     FAR const struct timespec *abstime)
>> > {
>> > ...
>> >     if (clockid == CLOCK_REALTIME)
>> >       {
>> >         wd_start_realtime(&rtcb->waitdog, abstime,
>> >                           nxsem_timeout, (uintptr_t)rtcb);
>> >       }
>> >     else
>> >       {
>> >         wd_start_abstime(&rtcb->waitdog, abstime,
>> >                          nxsem_timeout, (uintptr_t)rtcb);
>> >       }
>> > ...
>> >
>> >
>> >
>> > For my understanding the change of CLOCK_MONOTONIC is not correct.
>> > According to the POSIX definition
>> > https://pubs.opengroup.org/onlinepubs/9799919799/ it must be a
>> > "system-wide monotonic clock", CLOCK_BOOTTIME is not defined here.
>> >
>> >
>> > On the other hand, if such a low level change is made, all usages should
>> > be reviewed. There a lot of places where CLOCK_MONOTONIC is used in the
>> > nuttx source code. And there are places like in nxsem_clockwait() where
>> the
>> > change leads to an error even though CLOCK_MONOTONIC is not used in the
>> > code.
>> >
>> >
>> > What do you think?
>> >
>> > BR,
>> > Mathias
>> >
>>
> 

Reply via email to