Date: Mon, 11 Oct 2021 09:53:31 +0200 From: Sebastian Huber <sebastian.huber@embedded-brains.de> To: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Large timecounter delta handling Message-ID: <5318327d-d247-bb73-81d9-967c4ae18d32@embedded-brains.de>
next in thread | raw e-mail | index | archive | help
Hello, I synchronize currently the port of the FreeBSD timecounters to RTEMS. I=20 have to write test cases for all code we use in RTEMS. In 2020 some code=20 was added to fix integer overflow issues with large time deltas while=20 getting the time from a timehand. https://github.com/freebsd/freebsd-src/commit/6cf2362e2c7e9061611f93a48ec= 654a5b7451d6b#diff-8b8e2f8e41e6a847f14ab08c7d50454c20a4a135f2c2241d91687c= 0832c1d99e If a time delta obtained by tc_delta(th) is greater than or equal to=20 th->th_large_delta, then some extra calculation is carried out. The th->th_large_delta is computed like this scale =3D (uint64_t)1 << 63; scale +=3D (th->th_adjustment / 1024) * 2199; scale /=3D th->th_counter->tc_frequency; th->th_scale =3D scale * 2; th->th_large_delta =3D MIN(((uint64_t)1 << 63) / scale, UINT_MAX); If we ignore the th->th_adjustment (=3D=3D 0), then we have ideally scale =3D 2**64 / f th->th_large_delta =3D MIN( f / 2, UINT_MAX ) Does this mean that we only need the large delta processing if a=20 timehand was not updated for about 0.5s? --=20 embedded brains GmbH Herr Sebastian HUBER Dornierstr. 4 82178 Puchheim Germany email: sebastian.huber@embedded-brains.de phone: +49-89-18 94 741 - 16 fax: +49-89-18 94 741 - 08 Registergericht: Amtsgericht M=C3=BCnchen Registernummer: HRB 157899 Vertretungsberechtigte Gesch=C3=A4ftsf=C3=BChrer: Peter Rasmussen, Thomas= D=C3=B6rfler Unsere Datenschutzerkl=C3=A4rung finden Sie hier: https://embedded-brains.de/datenschutzerklaerung/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5318327d-d247-bb73-81d9-967c4ae18d32>