HI Mathias Sorry for late reply since i was on spring festival. I checked your error message, and i agree with your point. The issue should come from that the support of CLOCK_MONOTONIC is not sufficient.
I will provide fix for this issue as soon as possible, currently I suggest you not using CLOCK_MONOTONIC at the moment until this issue is resolved. BR, Chengdong <[email protected]> 于2026年2月20日周五 16:37写道: > > 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 > >> > > >> > > >
