[RTEMS Project] #4179: libbsd select timeout issue
RTEMS trac
trac at rtems.org
Tue Nov 17 01:45:41 UTC 2020
#4179: libbsd select timeout issue
-----------------------------+--------------------
Reporter: Zhengxin Rui | Owner: (none)
Type: defect | Status: new
Priority: normal | Milestone:
Component: network/libbsd | Version: 5
Severity: critical | Keywords:
Blocked By: | Blocking:
-----------------------------+--------------------
Kernel put the select thread to sleep queue in sleepq_set_timeout_sbt,
the expire value is calculated by this
expire = (sbt - SBT_1S + sbt_per_tick - 1) / sbt_per_tick;
sbt is the absolute time,no time drift.
but the sbt_per_tick is not an accurate value,
it can make the expire vaule bigger and bigger while sbt is increasing.
In rtems_bsd_initialize function,
rtems_bsd_sbt_per_watchdog_tick = SBT_1S / tps;
In our system the tick rate is set to 1000Hz,
the real value of rtems_bsd_sbt_per_watchdog_tick is
1<<32/1000=4294967.296
but in integer type the value is 4294967.
The error is 0.296/4294967 = 0.069ppm,
and it can increase the expire value 1ms every 14000 seconds.
--
Ticket URL: <http://devel.rtems.org/ticket/4179>
RTEMS Project <http://www.rtems.org/>
RTEMS Project
More information about the bugs
mailing list