Date: Fri, 29 May 2015 15:44:17 +0200 From: Sebastian Huber <sebastian.huber@embedded-brains.de> To: Poul-Henning Kamp <phk@freebsd.org> Cc: freebsd-hackers@freebsd.org Subject: Re: Problem with timecounters and memory model Message-ID: <55686D31.1060408@embedded-brains.de> In-Reply-To: <85121.1432906871@critter.freebsd.dk> References: <55686300.3080100@embedded-brains.de> <85086.1432906578@critter.freebsd.dk> <55686C0F.9000101@embedded-brains.de> <85121.1432906871@critter.freebsd.dk>
next in thread | previous in thread | raw e-mail | index | archive | help
On 29/05/15 15:41, Poul-Henning Kamp wrote:
> --------
> In message <55686C0F.9000101@embedded-brains.de>, Sebastian Huber write=
s:
>
>> Ok, what makes me wonder is why this problem didn't show up in FreeBSD=
.=3D20
>> In our case we observed backward jumps in the supposed to be monotonic=
=3D20
>> uptime.
> How often do you "wind" the timecounter ?
>
More often than necessary. About 1000 times a second with only one=20
timehand (this is a hack to support legacy systems). The test case is:
while (1) {
struct timespec newtime;
if (clock_gettime(CLOCK_MONOTONIC, &newtime) !=3D 0) {
fprintf(stderr, "clock_gettime() failed: \"%s\"\n",=20
strerror(errno));
return (NULL);
}
if (!(newtime.tv_sec > lasttime.tv_sec
|| (newtime.tv_sec =3D=3D lasttime.tv_sec
&& newtime.tv_nsec >=3D lasttime.tv_nsec))) {
printf("Time went backwards, from {%ld, %ld} to {%ld,=20
%ld}\n", lasttime.tv_sec, lasttime.tv_nsec, newtime.tv_sec,=20
newtime.tv_nsec);
}
lasttime =3D newtime;
}
--=20
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine gesch=E4ftliche Mitteilung im Sinne des EHUG.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?55686D31.1060408>
