From nobody Sat Jun 01 15:04:58 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Vs3FC4cP2z5N1yn; Sat, 01 Jun 2024 15:05:03 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from omta002.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Vs3FC1Kl6z4KXJ; Sat, 1 Jun 2024 15:05:03 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Authentication-Results: mx1.freebsd.org; none Received: from shw-obgw-4001a.ext.cloudfilter.net ([10.228.9.142]) by cmsmtp with ESMTPS id D7V2sbi0KdrxEDQI2sIkE4; Sat, 01 Jun 2024 15:05:02 +0000 Received: from spqr.komquats.com ([70.66.152.170]) by cmsmtp with ESMTPSA id DQHzsH4zFpsbgDQI0syg32; Sat, 01 Jun 2024 15:05:01 +0000 X-Auth-User: cschuber X-Authority-Analysis: v=2.4 cv=Ff+Ux4+6 c=1 sm=1 tr=0 ts=665b389d a=y8EK/9tc/U6QY+pUhnbtgQ==:117 a=y8EK/9tc/U6QY+pUhnbtgQ==:17 a=kj9zAlcOel0A:10 a=T1WGqf2p2xoA:10 a=SLG1KRGDAAAA:8 a=YxBL1-UpAAAA:8 a=6I5d2MoRAAAA:8 a=EkcXrb_YAAAA:8 a=pQs5aej7AAAA:8 a=-wuKhKTYAAAA:8 a=wFNwba7RAAAA:8 a=0FNk9USiAAAA:8 a=Ds8RGfT2AAAA:8 a=NMM7OKYrAAAA:8 a=zqNM9luALEXC4t7HWfkA:9 a=Vv29y2/UI4YIqoRk+XuAf7aa6iQ=:19 a=zz45bIk1XtsMeathu/1YEEouC2M=:19 a=65j1Gnx_R-Yhi4dZ:21 a=lqcHg5cX4UMA:10 a=CjuIK1q_8ugA:10 a=s5zKW874KtQA:10 a=-TBaU1e9WpdkKBzYXnwo:22 a=Ia-lj3WSrqcvXOmTRaiG:22 a=IjZwj45LgO3ly-622nXo:22 a=LK5xJRSDVpKd5WXXoEvA:22 a=prepyofVby0hjpoiPUJH:22 a=TF7iPsq83L4KsoDyi5cH:22 a=0afPCejbyZHll-xH3H2j:22 a=isrg6BwTYk6I_F0B0DtW:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTP id B3F26148E; Sat, 01 Jun 2024 08:04:58 -0700 (PDT) Received: by slippy.cwsent.com (Postfix, from userid 1000) id A23E8532; Sat, 01 Jun 2024 08:04:58 -0700 (PDT) X-Mailer: exmh version 2.9.0 11/07/2018 with nmh-1.8+dev Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Warner Losh cc: Cy Schubert , Nuno Teixeira , Warner Losh , src-committers , "" , "" Subject: Re: git: 108de784513d - main - Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC, not CLOCK_UPTIME In-reply-to: References: <202405311447.44VEl1G1078199@gitrepo.freebsd.org> <20240601133156.8EB804B0@slippy.cwsent.com> Comments: In-reply-to Warner Losh message dated "Sat, 01 Jun 2024 09:51:37 -0400." List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sat, 01 Jun 2024 08:04:58 -0700 Message-Id: <20240601150458.A23E8532@slippy.cwsent.com> X-CMAE-Envelope: MS4xfAXyHLtQt2ovpadNKmiXZUbFqd0d1osnqEDrkrO7Ngir40ecvLH7NeWWYKYn2hkK0TuTBvdbRp6usI1Jsetfy7cmt7mgC4rM0ObjB5uEtv5QPF6YGJ5L k6MMsOK1sR5d2QklGaq90SEVCyE4QWvgDrBcQRz3orRKepu0cljJM2vXrweyBJcv33Hv2mejvp6KBeJlCT47d3uGiMpgpaRPRvwDSjL5WYzHK2hbKg1JpYlE +4cEr3EdSI+Y/LG9xIakC5dnZ0+T/ELSM/l4JXy6mBP/M9HNbUek6PkM84tYb2EhuTYZMO8jU8a1zvOxkgbbH1k/MWP1DaoNYbhBdOCQoYaxroW4TMDfvNI8 l6duY76fTZWYXZmvwVtol9eOU7/jdQ== X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:16509, ipnet:3.96.0.0/15, country:US] X-Rspamd-Queue-Id: 4Vs3FC1Kl6z4KXJ In message , Warner Losh writes: > --000000000000dcc9a90619d4664c > Content-Type: text/plain; charset="UTF-8" > Content-Transfer-Encoding: quoted-printable > > On Sat, Jun 1, 2024 at 9:31=E2=80=AFAM Cy Schubert om> > wrote: > > > In message > > > om> > > , Warner Losh writes: > > > --0000000000000d72080619d34a39 > > > Content-Type: text/plain; charset=3D"UTF-8" > > > Content-Transfer-Encoding: quoted-printable > > > > > > On Sat, Jun 1, 2024, 4:37=3DE2=3D80=3DAFAM Nuno Teixeira sd.org> > > wr=3D > > > ote: > > > > > > > Hello, > > > > > > > > Having issues building graphics/mesa-dri: > > > > > > > > ../src/intel/common/xe/intel_gem.c:72:9: error: duplicate case value > > '4' > > > > 72 | case CLOCK_BOOTTIME: > > > > | ^ > > > > /usr/include/sys/_clock_id.h:81:25: note: expanded from macro > > > > 'CLOCK_BOOTTIME' > > > > 81 | #define CLOCK_BOOTTIME CLOCK_MONOTONIC > > > > | ^ > > > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro > > > > 'CLOCK_MONOTONIC' > > > > 56 | #define CLOCK_MONOTONIC 4 > > > > | ^ > > > > ../src/intel/common/xe/intel_gem.c:66:9: note: previous case defined > > here > > > > 66 | case CLOCK_MONOTONIC: > > > > | ^ > > > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro > > > > 'CLOCK_MONOTONIC' > > > > 56 | #define CLOCK_MONOTONIC 4 > > > > | ^ > > > > 1 error generated. > > > > > > > > > > Mesa needs to be updated to not assume these are distinct values. > > > > You should be able to resolve this with, > > > > --- src/intel/common/xe/intel_gem.c.orig 2024-05-22 > > 09:48:39.000000000 -0700 > > +++ src/intel/common/xe/intel_gem.c 2024-06-01 06:28:22.268439000 -07= > 00 > > @@ -69,8 +69,10 @@ > > #endif > > case CLOCK_REALTIME: > > #ifdef CLOCK_BOOTTIME > > +#if CLOCK_BOOTTIME !=3D CLOCK_MONOTONIC > > case CLOCK_BOOTTIME: > > #endif > > +#endif > > #ifdef CLOCK_TAI > > case CLOCK_TAI: > > #endif > > > > Yea, that should do it. I was going to look at this when I got back from > BSDcan (mostly because > my talk is this morning), but thanks for beating me to it. I woke up grump > and it was bugging me > on the walk over to the conference I was a little short in my first reply, > but since you proposed a > fix, I feel less guilty... :) Thanks! I just put it out there. I'm outside, again, today continuing to build that new fence. I can submit a poudriere review or PR for X11 maintainer approval. I'll need to show the WPA ports a little loving attention at that time too. Maybe tonight. -- Cheers, Cy Schubert FreeBSD UNIX: Web: https://FreeBSD.org NTP: Web: https://nwtime.org e^(i*pi)+1=0 > > Warner > > Warner > > Warner > > > -- > > Cheers, > > Cy Schubert > > FreeBSD UNIX: Web: https://FreeBSD.org > > NTP: Web: https://nwtime.org > > > > e^(i*pi)+1=3D0 > > > > > > > > > > Warner > > > > > > > > > > Thanks > > > > > > > > Warner Losh escreveu (sexta, 31/05/2024 =3DC3=3DA0(= > s) > > 15:47=3D > > > ): > > > > > > > >> The branch main has been updated by imp: > > > >> > > > >> URL: > > > >> > > https://cgit.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73= > e=3D > > > 26b5b54caa > > > >> > > > >> commit 108de784513d87bbe850e7b003a73e26b5b54caa > > > >> Author: Val Packett > > > >> AuthorDate: 2024-05-31 14:45:02 +0000 > > > >> Commit: Warner Losh > > > >> CommitDate: 2024-05-31 14:45:02 +0000 > > > >> > > > >> Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC, not CLOCK_UPTI= > ME > > > >> > > > >> The suspend-awareness situation with monotonic clocks across > > platfor=3D > > > ms > > > >> is kind of a mess, let's try not making it worse. > > > >> > > > >> On Linux, CLOCK_MONOTONIC does NOT count suspended time, and > > > >> CLOCK_BOOTTIME was introduced to INCLUDE suspended time. > > > >> > > > >> On OpenBSD, CLOCK_MONOTONIC DOES count suspended time, and > > > >> CLOCK_UPTIME > > > >> was introduced to EXCLUDE suspended time. > > > >> > > > >> On macOS, it's the same as OpenBSD, but with CLOCK_UPTIME_RAW. > > > >> > > > >> Right now, we do not have a monotonic clock that counts suspende= > d > > > >> time. > > > >> We have CLOCK_UPTIME as a distinct ID alias, and CLOCK_BOOTTIME > > as a > > > >> preprocessor alias, both being effectively `CLOCK_MONOTONIC` for > > now=3D > > > . > > > >> > > > >> When we introduce a suspend-aware clock in the future, it would > > make=3D > > > a > > > >> lot more sense to do it the OpenBSD/macOS way, i.e. to make > > > >> CLOCK_MONOTONIC include suspended time and make CLOCK_UPTIME > > exclude > > > >> it, > > > >> because that's what the name CLOCK_UPTIME implies: a deviation > > from > > > >> the > > > >> default intended for the uptime command to allow it to only show > > the > > > >> time the system was actually up and not suspended. > > > >> > > > >> Let's change the define right now to make sure software using th= > e > > > >> define > > > >> would not end up using the ID of the wrong clock in the future, > > and > > > >> fix > > > >> the IDs in the Linux compat code to match the expected changes > > too. > > > >> > > > >> See https://bugzilla.mozilla.org/show_bug.cgi?id=3D3D1824084 > > > >> for more discussion. > > > >> > > > >> Fixes: 155f15118a77 ("clock_gettime: Add Linux aliases > > for > > > >> CLOCK_*") > > > >> Fixes: 25ada637362d ("Map Linux CLOCK_BOOTTIME to nativ= > e > > > >> CLOCK_UPTIME.") > > > >> Sponsored by: https://www.patreon.com/valpackett > > > >> Reviewed by: kib, imp > > > >> Differential Revision: https://reviews.freebsd.org/D39270 > > > >> --- > > > >> sys/compat/linux/linux_time.c | 6 +++--- > > > >> sys/sys/_clock_id.h | 2 +- > > > >> 2 files changed, 4 insertions(+), 4 deletions(-) > > > >> > > > >> diff --git a/sys/compat/linux/linux_time.c > > b/sys/compat/linux/linux_time=3D > > > .c > > > >> index e9e5cf075210..f4dd26dd3d2a 100644 > > > >> --- a/sys/compat/linux/linux_time.c > > > >> +++ b/sys/compat/linux/linux_time.c > > > >> @@ -287,7 +287,7 @@ linux_to_native_clockid(clockid_t *n, clockid_t = > l) > > > >> *n =3D3D CLOCK_REALTIME; > > > >> break; > > > >> case LINUX_CLOCK_MONOTONIC: > > > >> - *n =3D3D CLOCK_MONOTONIC; > > > >> + *n =3D3D CLOCK_UPTIME; > > > >> break; > > > >> case LINUX_CLOCK_PROCESS_CPUTIME_ID: > > > >> *n =3D3D CLOCK_PROCESS_CPUTIME_ID; > > > >> @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, clockid_= > t > > l) > > > >> break; > > > >> case LINUX_CLOCK_MONOTONIC_COARSE: > > > >> case LINUX_CLOCK_MONOTONIC_RAW: > > > >> - *n =3D3D CLOCK_MONOTONIC_FAST; > > > >> + *n =3D3D CLOCK_UPTIME_FAST; > > > >> break; > > > >> case LINUX_CLOCK_BOOTTIME: > > > >> - *n =3D3D CLOCK_UPTIME; > > > >> + *n =3D3D CLOCK_MONOTONIC; > > > >> break; > > > >> case LINUX_CLOCK_REALTIME_ALARM: > > > >> case LINUX_CLOCK_BOOTTIME_ALARM: > > > >> diff --git a/sys/sys/_clock_id.h b/sys/sys/_clock_id.h > > > >> index 47a551428dc3..728346a0f0ab 100644 > > > >> --- a/sys/sys/_clock_id.h > > > >> +++ b/sys/sys/_clock_id.h > > > >> @@ -78,7 +78,7 @@ > > > >> * Linux compatible names. > > > >> */ > > > >> #if __BSD_VISIBLE > > > >> -#define CLOCK_BOOTTIME CLOCK_UPTIME > > > >> +#define CLOCK_BOOTTIME CLOCK_MONOTONIC > > > >> #define CLOCK_REALTIME_COARSE CLOCK_REALTIME_FAST > > > >> #define CLOCK_MONOTONIC_COARSE CLOCK_MONOTONIC_FAST > > > >> #endif > > > >> > > > >> > > > > > > > > -- > > > > Nuno Teixeira > > > > FreeBSD UNIX: Web: https://FreeBSD.org > > > > > > > > > > --0000000000000d72080619d34a39 > > > Content-Type: text/html; charset=3D"UTF-8" > > > Content-Transfer-Encoding: quoted-printable > > > > > >


> class=3D3D"gmail_quote">=3D > > >
On Sat, Jun 1, 2024, > > 4:37=3DE2=3D80=3DAFAM =3D > > > Nuno Teixeira < > target=3D3D"_blank">=3D > > > eduardo@freebsd.org> wrote:
> class=3D3D"gmail_quot=3D > > > e" style=3D3D"margin:0 0 0 .8ex;border-left:1px #ccc > > solid;padding-left:1ex">=3D > > >
Hello,

Having issues > > buildin=3D > > > g > > graphics/mesa-dri:

../src/intel/common/xe/intel_= > =3D > > > gem.c:72:9: error: duplicate case value '4'
=3DC2=3DA0 =3DC2= > =3DA072 | > > =3D > > > =3DC2=3DA0 =3DC2=3DA0case CLOCK_BOOTTIME:
=3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 | =3DC2=3DA0 > > =3DC2=3DA0 =3D > > > =3DC2=3DA0 =3DC2=3DA0 ^
/usr/include/sys/_clock_id.h:81:25: note: ex= > panded > > from =3D > > > macro 'CLOCK_BOOTTIME'
=3DC2=3DA0 =3DC2=3DA081 | #define > > CLOCK_BOOTTIME =3D > > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0CLOCK_MONOTONIC r>=3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3DA0 |=3D > > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > > ^
/usr/include/sys/_clock_id.h:56=3D > > > :26: note: expanded from macro 'CLOCK_MONOTONIC'
=3DC2=3DA0 > > =3DC2=3DA056=3D > > > | #define CLOCK_MONOTONIC =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 = > 4
=3DC2=3DA0 > > =3DC2=3DA0 =3D > > > =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > > ^
../src/intel/common/xe/i=3D > > > ntel_gem.c:66:9: note: previous case defined here
=3DC2=3DA0 =3DC2= > =3DA066 | > > =3DC2=3D > > > =3DA0 =3DC2=3DA0case CLOCK_MONOTONIC:
=3DC2=3DA0 =3DC2=3DA0 =3DC2=3D= > A0 | =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 ^
/usr/include/sys/_clock_id.h:56:26: note: expande= > d from > > mac=3D > > > ro 'CLOCK_MONOTONIC'
=3DC2=3DA0 =3DC2=3DA056 | #define > > CLOCK_MONOTONIC =3D > > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 4
=3DC2=3DA0 =3DC2=3DA0 = > =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0= > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3DA0 =3D > > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 ^
1 error > > generated.
=3D > > >

> class=3D3D"gmail_quo=3D > > > te">
Mesa needs to be updated to not assume these are distinct > > values.<=3D > > > /div>

Warner
=3DC2=3DA0
> class=3D3D"=3D > > > gmail_quote" style=3D3D"margin:0 0 0 .8ex;border-left:1px #ccc > > solid;padding-=3D > > > left:1ex">
Thanks
> clear=3D3D"=3D > > > all">

v > > dir=3D > > > =3D3D"ltr" class=3D3D"gmail_attr">Warner Losh < > imp@freebsd=3D > > > .org" rel=3D3D"noreferrer" target=3D3D"_blank">imp@freebsd.org> > > escreveu=3D > > > (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47):
> class=3D3D"gmail_q=3D > > > uote" style=3D3D"margin:0px 0px 0px 0.8ex;border-left:1px solid > > rgb(204,204,2=3D > > > 04);padding-left:1ex">The branch main has been updated by imp:
> > >
> > > URL: > https://cgit.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe=3D > > > 850e7b003a73e26b5b54caa" rel=3D3D"noreferrer noreferrer" > > target=3D3D"_blank">ht=3D > > > tps:// > > cgit.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73e26b5b= > =3D > > > 54caa
> > >
> > > commit 108de784513d87bbe850e7b003a73e26b5b54caa
> > > Author:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Val Packett <val@packett.cool= > >
> > > AuthorDate: 2024-05-31 14:45:02 +0000
> > > Commit:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Warner Losh <imp@FreeBSD.org&= > gt;
> > > CommitDate: 2024-05-31 14:45:02 +0000
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC,= > not > > CLOCK_U=3D > > > PTIME
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 The suspend-awareness situation with monotonic cl= > ocks > > across =3D > > > platforms
> > > =3DC2=3DA0 =3DC2=3DA0 is kind of a mess, let's try not making it wo= > rse.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 On Linux, CLOCK_MONOTONIC does NOT count suspende= > d time, > > and<=3D > > > br> > > > =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME was introduced to INCLUDE suspende= > d > > time.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 On OpenBSD, CLOCK_MONOTONIC DOES count suspended = > time, and > > CL=3D > > > OCK_UPTIME
> > > =3DC2=3DA0 =3DC2=3DA0 was introduced to EXCLUDE suspended time.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 On macOS, it's the same as OpenBSD, but with > > CLOCK_UPTIME=3D > > > _RAW.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 Right now, we do not have a monotonic clock that = > counts > > suspe=3D > > > nded time.
> > > =3DC2=3DA0 =3DC2=3DA0 We have CLOCK_UPTIME as a distinct ID alias, and > > CLOCK_BOOTTI=3D > > > ME as a
> > > =3DC2=3DA0 =3DC2=3DA0 preprocessor alias, both being effectively > > `CLOCK_MONOTONIC` =3D > > > for now.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 When we introduce a suspend-aware clock in the fu= > ture, it > > wou=3D > > > ld make a
> > > =3DC2=3DA0 =3DC2=3DA0 lot more sense to do it the OpenBSD/macOS way, i.= > e. to > > make > > r> > > > =3DC2=3DA0 =3DC2=3DA0 CLOCK_MONOTONIC include suspended time and make > > CLOCK_UPTIME =3D > > > exclude it,
> > > =3DC2=3DA0 =3DC2=3DA0 because that's what the name CLOCK_UPTIME imp= > lies: a > > devi=3D > > > ation from the
> > > =3DC2=3DA0 =3DC2=3DA0 default intended for the uptime command to allow = > it to > > only s=3D > > > how the
> > > =3DC2=3DA0 =3DC2=3DA0 time the system was actually up and not suspended= > .
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 Let's change the define right now to make sur= > e > > software u=3D > > > sing the define
> > > =3DC2=3DA0 =3DC2=3DA0 would not end up using the ID of the wrong clock = > in the > > futur=3D > > > e, and fix
> > > =3DC2=3DA0 =3DC2=3DA0 the IDs in the Linux compat code to match the exp= > ected > > change=3D > > > s too.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 See > https://bugzilla.mozilla.org/show_bug.cgi?id=3D > > > =3D3D1824084" rel=3D3D"noreferrer noreferrer" target=3D3D"_blank"> > > https://bugzill=3D > > > a.mozilla.org/show_bug.cgi?id=3D3D1824084
> > > =3DC2=3DA0 =3DC2=3DA0 for more discussion.
> > >
> > > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0= > =3DC2=3DA0 155f15118a77 > > ("=3D > > > clock_gettime: Add Linux aliases for CLOCK_*")
> > > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0= > =3DC2=3DA0 25ada637362d > > ("=3D > > > Map Linux CLOCK_BOOTTIME to native CLOCK_UPTIME.")
> > > =3DC2=3DA0 =3DC2=3DA0 Sponsored by:=3DC2=3DA0 =3DC2=3DA0 > https://www.patreon.com/=3D > > > valpackett" rel=3D3D"noreferrer noreferrer" target=3D3D"_blank"> > > https://www.pat=3D > > > reon.com/valpackett
> > > =3DC2=3DA0 =3DC2=3DA0 Reviewed by:=3DC2=3DA0 =3DC2=3DA0 kib, imp
> > > =3DC2=3DA0 =3DC2=3DA0 Differential Revision:=3DC2=3DA0 > https://reviews.freeb=3D > > > sd.org/D39270" rel=3D3D"noreferrer noreferrer" target=3D3D"_blank"> > > https://revi=3D > > > ews.freebsd.org/D39270
> > > ---
> > > =3DC2=3DA0sys/compat/linux/linux_time.c | 6 +++---
> > > =3DC2=3DA0sys/sys/_clock_id.h=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 =3DC2=3DA0 =3DC2=3DA0| 2 > > +- > > > > > > =3DC2=3DA02 files changed, 4 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/sys/compat/linux/linux_time.c > > b/sys/compat/linux/linux_time.c<=3D > > > br> > > > index e9e5cf075210..f4dd26dd3d2a 100644
> > > --- a/sys/compat/linux/linux_time.c
> > > +++ b/sys/compat/linux/linux_time.c
> > > @@ -287,7 +287,7 @@ linux_to_native_clockid(clockid_t *n, clockid_t > > l)
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 *n =3D3D > > CLOCK_REALTI=3D > > > ME;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 break;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC:= >
> > > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_MONOTO=3D > > > NIC;
> > > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_UPTIME=3D > > > ;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 break;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_PROCESS_CP= > UTIME_ID:
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 *n =3D3D > > CLOCK_PROCES=3D > > > S_CPUTIME_ID;
> > > @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, clockid_t > > l) > > > > > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 break;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC_= > COARSE:
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC_= > RAW:
> > > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_MONOTO=3D > > > NIC_FAST;
> > > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_UPTIME=3D > > > _FAST;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 break;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME:<= > br> > > > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_UPTIME=3D > > > ;
> > > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0*n =3D3D > > CLOCK_MONOTO=3D > > > NIC;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 =3DC2=3DA0 break;
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_REALTIME_A= > LARM:
> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME_A= > LARM:
> > > diff --git a/sys/sys/_clock_id.h b/sys/sys/_clock_id.h
> > > index 47a551428dc3..728346a0f0ab 100644
> > > --- a/sys/sys/_clock_id.h
> > > +++ b/sys/sys/_clock_id.h
> > > @@ -78,7 +78,7 @@
> > > =3DC2=3DA0 * Linux compatible names.
> > > =3DC2=3DA0 */
> > > =3DC2=3DA0#if __BSD_VISIBLE
> > > -#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC2= > =3DA0 =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 CLOCK_UPTIME
> > > +#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC2= > =3DA0 =3DC2=3DA0 =3DC2=3DA0 > > =3DC2=3D > > > =3DA0 =3DC2=3DA0 CLOCK_MONOTONIC
> > > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_REAL= > TIME_COARSE=3DC2=3DA0 > > =3DC2=3DA0=3D > > > CLOCK_REALTIME_FAST
> > > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_MONO= > TONIC_COARSE=3DC2=3DA0 > > CLOCK=3D > > > _MONOTONIC_FAST
> > > =3DC2=3DA0#endif
> > >
> > >


> class=3D3D"gmail_signature_pre=3D > > > fix">--
> dir=3D3D"l=3D > > > tr">
Nuno > > Teixeira
> > color=3D3D"#888888"> > > > FreeBSD UNIX:=3DC2=3DA0 <eduardo@FreeBSD.org>=3DC2=3DA0 =3DC2=3DA= > 0Web:=3DC2=3DA0 > > > > ref=3D3D"https://FreeBSD.org" rel=3D3D"noreferrer noreferrer" > > target=3D3D"_blank"=3D > > > >https://FreeBSD.org
> > >
> > >
> > > > > > --0000000000000d72080619d34a39-- > > > > > > > > > > > --000000000000dcc9a90619d4664c > Content-Type: text/html; charset="UTF-8" > Content-Transfer-Encoding: quoted-printable > >


= >
On Sat, Jun 1, 2024 at 9:31=E2=80=AFA= > M Cy Schubert <Cy.Schubert@= > cschubert.com> wrote:
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi= > ng-left:1ex">In message <CANCZdfpMvorgKYx6pCL7_q6BW3AqZSDwryKHg_cV+yt_E-= > FbOQ@mail.gmail.c
> om>
> , Warner Losh writes:
> > --0000000000000d72080619d34a39
> > Content-Type: text/plain; charset=3D"UTF-8"
> > Content-Transfer-Encoding: quoted-printable
> >
> > On Sat, Jun 1, 2024, 4:37=3DE2=3D80=3DAFAM Nuno Teixeira < =3D"mailto:eduardo@freebsd.org" target=3D"_blank">eduardo@freebsd.org&g= > t; wr=3D
> > ote:
> >
> > > Hello,
> > >
> > > Having issues building graphics/mesa-dri:
> > >
> > > ../src/intel/common/xe/intel_gem.c:72:9: error: duplicate case va= > lue '4'
> > >=C2=A0 =C2=A0 72 |=C2=A0 =C2=A0 case CLOCK_BOOTTIME:
> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^ > > > > /usr/include/sys/_clock_id.h:81:25: note: expanded from macro
> > > 'CLOCK_BOOTTIME'
> > >=C2=A0 =C2=A0 81 | #define CLOCK_BOOTTIME=C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A0 CLOCK_MONOTONIC
> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = > =C2=A0^
> > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro
> > > 'CLOCK_MONOTONIC'
> > >=C2=A0 =C2=A0 56 | #define CLOCK_MONOTONIC=C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A04
> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = > =C2=A0^
> > > ../src/intel/common/xe/intel_gem.c:66:9: note: previous case defi= > ned here
> > >=C2=A0 =C2=A0 66 |=C2=A0 =C2=A0 case CLOCK_MONOTONIC:
> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^ > > > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro
> > > 'CLOCK_MONOTONIC'
> > >=C2=A0 =C2=A0 56 | #define CLOCK_MONOTONIC=C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A04
> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = > =C2=A0^
> > > 1 error generated.
> > >
> >
> > Mesa needs to be updated to not assume these are distinct values.
>
> You should be able to resolve this with,
>
> --- src/intel/common/xe/intel_gem.c.orig=C2=A0 =C2=A0 =C2=A0 =C2=A0 2024-05= > -22 09:48:39.000000000 -0700
> +++ src/intel/common/xe/intel_gem.c=C2=A0 =C2=A0 =C2=A02024-06-01 06:28:22.= > 268439000 -0700
> @@ -69,8 +69,10 @@
> =C2=A0#endif
> =C2=A0 =C2=A0 case CLOCK_REALTIME:
> =C2=A0#ifdef CLOCK_BOOTTIME
> +#if CLOCK_BOOTTIME !=3D CLOCK_MONOTONIC
> =C2=A0 =C2=A0 case CLOCK_BOOTTIME:
> =C2=A0#endif
> +#endif
> =C2=A0#ifdef CLOCK_TAI
> =C2=A0 =C2=A0 case CLOCK_TAI:
> =C2=A0#endif

Yea, that should do it. I = > was going to look at this when I got back from BSDcan (mostly because
= >
my talk is this morning), but thanks for beating me to it.=C2=A0 I wok= > e up grump and it was bugging me
on the=C2=A0walk over to the con= > ference I was a little short in my first reply, but since you proposed a iv>
fix, I feel less guilty... :) Thanks!

Warn= > er

Warner

Warner=C2=A0 iv>
er-left:1px solid rgb(204,204,204);padding-left:1ex"> > --
> Cheers,
> Cy Schubert < nk">Cy.Schubert@cschubert.com>
> FreeBSD UNIX:=C2=A0 <cy@FreeBSD.org>=C2=A0 =C2=A0Web:=C2=A0 =3D"https://FreeBSD.org" rel=3D"noreferrer" target=3D"_blank">https://FreeB= > SD.org
> NTP:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0< e.org" target=3D"_blank">cy@nwtime.org>=C2=A0 =C2=A0 Web:=C2=A0 ref=3D"https://nwtime.org" rel=3D"noreferrer" target=3D"_blank">https://nwt= > ime.org
>
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= > =A0 =C2=A0 e^(i*pi)+1=3D0
>
>
> >
> > Warner
> >
> >
> > > Thanks
> > >
> > > Warner Losh < nk">imp@freebsd.org> escreveu (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47= > =3D
> > ):
> > >
> > >> The branch main has been updated by imp:
> > >>
> > >> URL:
> > >> 84513d87bbe850e7b003a73e=3D" rel=3D"noreferrer" target=3D"_blank">https://c= > git.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73e=3D > > > 26b5b54caa
> > >>
> > >> commit 108de784513d87bbe850e7b003a73e26b5b54caa
> > >> Author:=C2=A0 =C2=A0 =C2=A0Val Packett <val@packett.cool&g= > t;
> > >> AuthorDate: 2024-05-31 14:45:02 +0000
> > >> Commit:=C2=A0 =C2=A0 =C2=A0Warner Losh <imp@FreeBSD.org>= > ;
> > >> CommitDate: 2024-05-31 14:45:02 +0000
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0Redefine CLOCK_BOOTTIME to alias CLOCK_MON= > OTONIC, not CLOCK_UPTIME
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0The suspend-awareness situation with monot= > onic clocks across platfor=3D
> > ms
> > >>=C2=A0 =C2=A0 =C2=A0is kind of a mess, let's try not makin= > g it worse.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0On Linux, CLOCK_MONOTONIC does NOT count s= > uspended time, and
> > >>=C2=A0 =C2=A0 =C2=A0CLOCK_BOOTTIME was introduced to INCLUDE s= > uspended time.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0On OpenBSD, CLOCK_MONOTONIC DOES count sus= > pended time, and
> > >> CLOCK_UPTIME
> > >>=C2=A0 =C2=A0 =C2=A0was introduced to EXCLUDE suspended time.<= > br> > > >>
> > >>=C2=A0 =C2=A0 =C2=A0On macOS, it's the same as OpenBSD, bu= > t with CLOCK_UPTIME_RAW.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0Right now, we do not have a monotonic cloc= > k that counts suspended
> > >> time.
> > >>=C2=A0 =C2=A0 =C2=A0We have CLOCK_UPTIME as a distinct ID alia= > s, and CLOCK_BOOTTIME as a
> > >>=C2=A0 =C2=A0 =C2=A0preprocessor alias, both being effectively= > `CLOCK_MONOTONIC` for now=3D
> > .
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0When we introduce a suspend-aware clock in= > the future, it would make=3D
> >=C2=A0 a
> > >>=C2=A0 =C2=A0 =C2=A0lot more sense to do it the OpenBSD/macOS = > way, i.e. to make
> > >>=C2=A0 =C2=A0 =C2=A0CLOCK_MONOTONIC include suspended time and= > make CLOCK_UPTIME exclude
> > >> it,
> > >>=C2=A0 =C2=A0 =C2=A0because that's what the name CLOCK_UPT= > IME implies: a deviation from
> > >> the
> > >>=C2=A0 =C2=A0 =C2=A0default intended for the uptime command to= > allow it to only show the
> > >>=C2=A0 =C2=A0 =C2=A0time the system was actually up and not su= > spended.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0Let's change the define right now to m= > ake sure software using the
> > >> define
> > >>=C2=A0 =C2=A0 =C2=A0would not end up using the ID of the wrong= > clock in the future, and
> > >> fix
> > >>=C2=A0 =C2=A0 =C2=A0the IDs in the Linux compat code to match = > the expected changes too.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0See g/show_bug.cgi?id=3D3D1824084" rel=3D"noreferrer" target=3D"_blank">https:/= > /bugzilla.mozilla.org/show_bug.cgi?id=3D3D1824084
> > >>=C2=A0 =C2=A0 =C2=A0for more discussion.
> > >>
> > >>=C2=A0 =C2=A0 =C2=A0Fixes:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1= > 55f15118a77 ("clock_gettime: Add Linux aliases for
> > >> CLOCK_*")
> > >>=C2=A0 =C2=A0 =C2=A0Fixes:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2= > 5ada637362d ("Map Linux CLOCK_BOOTTIME to native
> > >> CLOCK_UPTIME.")
> > >>=C2=A0 =C2=A0 =C2=A0Sponsored by:=C2=A0 =C2=A0 ://www.patreon.com/valpackett" rel=3D"noreferrer" target=3D"_blank">https:/= > /www.patreon.com/valpackett
> > >>=C2=A0 =C2=A0 =C2=A0Reviewed by:=C2=A0 =C2=A0 kib, imp
> > >>=C2=A0 =C2=A0 =C2=A0Differential Revision:=C2=A0 tps://reviews.freebsd.org/D39270" rel=3D"noreferrer" target=3D"_blank">http= > s://reviews.freebsd.org/D39270
> > >> ---
> > >>=C2=A0 sys/compat/linux/linux_time.c | 6 +++---
> > >>=C2=A0 sys/sys/_clock_id.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = > =C2=A0| 2 +-
> > >>=C2=A0 2 files changed, 4 insertions(+), 4 deletions(-)
> > >>
> > >> diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux= > /linux_time=3D
> > .c
> > >> index e9e5cf075210..f4dd26dd3d2a 100644
> > >> --- a/sys/compat/linux/linux_time.c
> > >> +++ b/sys/compat/linux/linux_time.c
> > >> @@ -287,7 +287,7 @@ linux_to_native_clockid(clockid_t *n, clo= > ckid_t l)
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > *n =3D3D CLOCK_REALTIME;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > break;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_MONOTONIC:<= > br> > > >> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_MONOTONIC;
> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_UPTIME;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > break;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_PROCESS_CPU= > TIME_ID:
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > *n =3D3D CLOCK_PROCESS_CPUTIME_ID;
> > >> @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, c= > lockid_t l)
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > break;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_MONOTONIC_C= > OARSE:
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_MONOTONIC_R= > AW:
> > >> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_MONOTONIC_FAST;
> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_UPTIME_FAST;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > break;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_BOOTTIME: r> > > >> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_UPTIME;
> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = > =3D3D CLOCK_MONOTONIC;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= > break;
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_REALTIME_AL= > ARM:
> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_BOOTTIME_AL= > ARM:
> > >> diff --git a/sys/sys/_clock_id.h b/sys/sys/_clock_id.h
> > >> index 47a551428dc3..728346a0f0ab 100644
> > >> --- a/sys/sys/_clock_id.h
> > >> +++ b/sys/sys/_clock_id.h
> > >> @@ -78,7 +78,7 @@
> > >>=C2=A0 =C2=A0* Linux compatible names.
> > >>=C2=A0 =C2=A0*/
> > >>=C2=A0 #if __BSD_VISIBLE
> > >> -#define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_BOOTTIME=C2=A0 =C2= > =A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_UPTIME
> > >> +#define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_BOOTTIME=C2=A0 =C2= > =A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_MONOTONIC
> > >>=C2=A0 #define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_REALTIME_COARS= > E=C2=A0 =C2=A0CLOCK_REALTIME_FAST
> > >>=C2=A0 #define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_MONOTONIC_COAR= > SE=C2=A0 CLOCK_MONOTONIC_FAST
> > >>=C2=A0 #endif
> > >>
> > >>
> > >
> > > --
> > > Nuno Teixeira
> > > FreeBSD UNIX:=C2=A0 <eduardo@FreeBSD.org>=C2=A0 =C2=A0Web:= > =C2=A0 >https://FreeBSD.org
> > >
> >
> > --0000000000000d72080619d34a39
> > Content-Type: text/html; charset=3D"UTF-8"
> > Content-Transfer-Encoding: quoted-printable
> >
> > <div dir=3D3D"ltr"><div dir=3D3D"auto">= > ;<div><br><br><div class=3D3D"gmail_quote"&g= > t;=3D
> > <div dir=3D3D"ltr" class=3D3D"gmail_attr">On= > Sat, Jun 1, 2024, 4:37=3DE2=3D80=3DAFAM =3D
> > Nuno Teixeira &lt;<a href=3D3D"mailto: uardo@freebsd.org" target=3D"_blank">eduardo@freebsd.org" target= > =3D3D"_blank">=3D
> > eduardo@freeb= > sd.org</a>&gt; wrote:<br></div><blockquote cla= > ss=3D3D"gmail_quot=3D
> > e" style=3D3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p= > adding-left:1ex">=3D
> > <div dir=3D3D"ltr"><div>Hello,</div><di= > v><br></div><div>Having issues buildin=3D
> > g graphics/mesa-dri:</div><div><br></div><d= > iv>../src/intel/common/xe/intel_=3D
> > gem.c:72:9: error: duplicate case value &#39;4&#39;<br>= > =3DC2=3DA0 =3DC2=3DA072 | =3D
> > =3DC2=3DA0 =3DC2=3DA0case CLOCK_BOOTTIME:<br>=3DC2=3DA0 =3DC2=3D= > A0 =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3D
> > =3DC2=3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:81:25: n= > ote: expanded from =3D
> > macro &#39;CLOCK_BOOTTIME&#39;<br>=3DC2=3DA0 =3DC2=3DA08= > 1 | #define CLOCK_BOOTTIME =3D
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0CLOCK_MONOTONIC&= > lt;br>=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 |=3D
> >=C2=A0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 ^<br&g= > t;/usr/include/sys/_clock_id.h:56=3D
> > :26: note: expanded from macro &#39;CLOCK_MONOTONIC&#39;<br= > >=3DC2=3DA0 =3DC2=3DA056=3D
> >=C2=A0 | #define CLOCK_MONOTONIC =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= > =3DA0 4<br>=3DC2=3DA0 =3DC2=3DA0 =3D
> > =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 = > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 ^<br>../src/intel/common/xe/i=3D
> > ntel_gem.c:66:9: note: previous case defined here<br>=3DC2=3DA0 = > =3DC2=3DA066 | =3DC2=3D
> > =3DA0 =3DC2=3DA0case CLOCK_MONOTONIC:<br>=3DC2=3DA0 =3DC2=3DA0 = > =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:56:26: note: = > expanded from mac=3D
> > ro &#39;CLOCK_MONOTONIC&#39;<br>=3DC2=3DA0 =3DC2=3DA056 = > | #define CLOCK_MONOTONIC =3D
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 4<br>=3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 ^<br>1 error generated.</div= > ></div></blockquote></div>=3D
> > </div><div dir=3D3D"auto"><br></div>= > <div dir=3D3D"auto"><div class=3D3D"gmail_quo=3D > > > te"><div>Mesa needs to be updated to not assume these ar= > e distinct values.<=3D
> > /div><div><br></div><div>Warner</div>= > <div>=3DC2=3DA0</div><blockquote class=3D3D"=3D
> > gmail_quote" style=3D3D"margin:0 0 0 .8ex;border-left:1px #c= > cc solid;padding-=3D
> > left:1ex"><div dir=3D3D"ltr"><div><fo= > nt color=3D3D"#888888">Thanks<br clear=3D3D"=3D
> > all"></font></div><div></div></div&= > gt;<br><div class=3D3D"gmail_quote"><div dir=3D > > > =3D3D"ltr" class=3D3D"gmail_attr">Warner Losh &= > amp;lt;<a href=3D3D"mailto: "_blank">imp@freebsd=3D
> > .org" rel=3D3D"noreferrer" target=3D3D"_blank"= > ;>imp@freebsd.org a></a>&gt; escreveu=3D
> >=C2=A0 (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47):<br></div>&l= > t;blockquote class=3D3D"gmail_q=3D
> > uote" style=3D3D"margin:0px 0px 0px 0.8ex;border-left:1px so= > lid rgb(204,204,2=3D
> > 04);padding-left:1ex">The branch main has been updated by imp:= > <br>
> > <br>
> > URL: <a href=3D3D"
it/?id=3D3D108de784513d87bbe=3D" rel=3D"noreferrer" target=3D"_blank">https= > ://cgit.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe=3D
> > 850e7b003a73e26b5b54caa" rel=3D3D"noreferrer noreferrer"= > ; target=3D3D"_blank">ht=3D
> > tps:// 3d87bbe850e7b003a73e26b5b=3D" rel=3D"noreferrer" target=3D"_blank">cgit.Fre= > eBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73e26b5b=3D
> > 54caa</a><br>
> > <br>
> > commit 108de784513d87bbe850e7b003a73e26b5b54caa<br>
> > Author:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Val Packett &lt;val@packett= > .cool&gt;<br>
> > AuthorDate: 2024-05-31 14:45:02 +0000<br>
> > Commit:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Warner Losh &lt;imp@FreeBSD= > .org&gt;<br>
> > CommitDate: 2024-05-31 14:45:02 +0000<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC= > , not CLOCK_U=3D
> > PTIME<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 The suspend-awareness situation with monotonic c= > locks across =3D
> > platforms<br>
> > =3DC2=3DA0 =3DC2=3DA0 is kind of a mess, let&#39;s try not making = > it worse.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 On Linux, CLOCK_MONOTONIC does NOT count suspend= > ed time, and<=3D
> > br>
> > =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME was introduced to INCLUDE suspend= > ed time.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 On OpenBSD, CLOCK_MONOTONIC DOES count suspended= > time, and CL=3D
> > OCK_UPTIME<br>
> > =3DC2=3DA0 =3DC2=3DA0 was introduced to EXCLUDE suspended time.<br&= > gt;
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 On macOS, it&#39;s the same as OpenBSD, but = > with CLOCK_UPTIME=3D
> > _RAW.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 Right now, we do not have a monotonic clock that= > counts suspe=3D
> > nded time.<br>
> > =3DC2=3DA0 =3DC2=3DA0 We have CLOCK_UPTIME as a distinct ID alias, and= > CLOCK_BOOTTI=3D
> > ME as a<br>
> > =3DC2=3DA0 =3DC2=3DA0 preprocessor alias, both being effectively `CLOC= > K_MONOTONIC` =3D
> > for now.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 When we introduce a suspend-aware clock in the f= > uture, it wou=3D
> > ld make a<br>
> > =3DC2=3DA0 =3DC2=3DA0 lot more sense to do it the OpenBSD/macOS way, i= > .e. to make<b=3D
> > r>
> > =3DC2=3DA0 =3DC2=3DA0 CLOCK_MONOTONIC include suspended time and make = > CLOCK_UPTIME =3D
> > exclude it,<br>
> > =3DC2=3DA0 =3DC2=3DA0 because that&#39;s what the name CLOCK_UPTIM= > E implies: a devi=3D
> > ation from the<br>
> > =3DC2=3DA0 =3DC2=3DA0 default intended for the uptime command to allow= > it to only s=3D
> > how the<br>
> > =3DC2=3DA0 =3DC2=3DA0 time the system was actually up and not suspende= > d.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 Let&#39;s change the define right now to mak= > e sure software u=3D
> > sing the define<br>
> > =3DC2=3DA0 =3DC2=3DA0 would not end up using the ID of the wrong clock= > in the futur=3D
> > e, and fix<br>
> > =3DC2=3DA0 =3DC2=3DA0 the IDs in the Linux compat code to match the ex= > pected change=3D
> > s too.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 See <a href=3D3D" illa.mozilla.org/show_bug.cgi?id=3D" rel=3D"noreferrer" target=3D"_blank">h= > ttps://bugzilla.mozilla.org/show_bug.cgi?id=3D
> > =3D3D1824084" rel=3D3D"noreferrer noreferrer" target=3D= > 3D"_blank"> et=3D"_blank">https://bugzill=3D
> > referrer" target=3D"_blank">a.mozilla.org/show_bug.cgi?id=3D3D1824084&l= > t;/a><br>
> > =3DC2=3DA0 =3DC2=3DA0 for more discussion.<br>
> > <br>
> > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 =3DC2=3DA0 155f15118a77 (&quot;=3D
> > clock_gettime: Add Linux aliases for CLOCK_*&quot;)<br>
> > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= > 0 =3DC2=3DA0 25ada637362d (&quot;=3D
> > Map Linux CLOCK_BOOTTIME to native CLOCK_UPTIME.&quot;)<br><= > br> > > =3DC2=3DA0 =3DC2=3DA0 Sponsored by:=3DC2=3DA0 =3DC2=3DA0<a href=3D3= > D" "_blank">https://www.patreon.com/=3D
> > valpackett" rel=3D3D"noreferrer noreferrer" target=3D3D= > "_blank"> =3D"_blank">https://www.pat=3D
> > lank">reon.com/valpackett</a><br>
> > =3DC2=3DA0 =3DC2=3DA0 Reviewed by:=3DC2=3DA0 =3DC2=3DA0 kib, imp<br= > >
> > =3DC2=3DA0 =3DC2=3DA0 Differential Revision:=3DC2=3DA0 <a href=3D3D= > " ">https://reviews.freeb=3D
> > = > sd.org/D39270" rel=3D3D"noreferrer noreferrer" target=3D= > 3D"_blank"> =3D"_blank">https://revi=3D
> > "_blank">ews.freebsd.org/D39270</a><br>
> > ---<br>
> > =3DC2=3DA0sys/compat/linux/linux_time.c | 6 +++---<br>
> > =3DC2=3DA0sys/sys/_clock_id.h=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D= > A0 =3DC2=3DA0 =3DC2=3DA0| 2 +-<br=3D
> > >
> > =3DC2=3DA02 files changed, 4 insertions(+), 4 deletions(-)<br> r> > > <br>
> > diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux/linux_ti= > me.c<=3D
> > br>
> > index e9e5cf075210..f4dd26dd3d2a 100644<br>
> > --- a/sys/compat/linux/linux_time.c<br>
> > +++ b/sys/compat/linux/linux_time.c<br>
> > @@ -287,7 +287,7 @@ linux_to_native_clockid(clockid_t *n, clockid_t l)= > <br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 *n =3D3D CLOCK_REALTI=3D
> > ME;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 break;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= > :<br>
> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D
> > NIC;<br>
> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D
> > ;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 break;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_PROCESS_C= > PUTIME_ID:<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 *n =3D3D CLOCK_PROCES=3D
> > S_CPUTIME_ID;<br>
> > @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, clockid_t = > l)<br=3D
> > >
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 break;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= > _COARSE:<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= > _RAW:<br>
> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D
> > NIC_FAST;<br>
> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D
> > _FAST;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 break;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME:= > <br>
> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D
> > ;<br>
> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= > C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D
> > NIC;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= > 2=3DA0 =3DC2=3DA0 break;<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_REALTIME_= > ALARM:<br>
> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME_= > ALARM:<br>
> > diff --git a/sys/sys/_clock_id.h b/sys/sys/_clock_id.h<br>
> > index 47a551428dc3..728346a0f0ab 100644<br>
> > --- a/sys/sys/_clock_id.h<br>
> > +++ b/sys/sys/_clock_id.h<br>
> > @@ -78,7 +78,7 @@<br>
> > =3DC2=3DA0 * Linux compatible names.<br>
> > =3DC2=3DA0 */<br>
> > =3DC2=3DA0#if __BSD_VISIBLE<br>
> > -#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC= > 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 CLOCK_UPTIME<br>
> > +#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC= > 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D
> > =3DA0 =3DC2=3DA0 CLOCK_MONOTONIC<br>
> > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_REA= > LTIME_COARSE=3DC2=3DA0 =3DC2=3DA0=3D
> > CLOCK_REALTIME_FAST<br>
> > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_MON= > OTONIC_COARSE=3DC2=3DA0 CLOCK=3D
> > _MONOTONIC_FAST<br>
> > =3DC2=3DA0#endif<br>
> > <br>
> > </blockquote></div><br clear=3D3D"all"><= > ;br><span class=3D3D"gmail_signature_pre=3D
> > fix">-- </span><br><div dir=3D3D"ltr"= > class=3D3D"gmail_signature"><div dir=3D3D"l=3D
> > tr"><div><font color=3D3D"#888888">Nuno = > Teixeira</font></div><div><div><font =3D
> > color=3D3D"#888888">
> > FreeBSD UNIX:=3DC2=3DA0 &lt;eduardo@FreeBSD.org&gt;=3DC2=3DA0 = > =3DC2=3DA0Web:=3DC2=3DA0 <a h=3D
> > ref=3D3D" t=3D"_blank">https://FreeBSD.org" rel=3D3D"noreferrer norefer= > rer" target=3D3D"_blank"=3D
> > > k">https://FreeBSD.org</a><br></font></div><= > /div></div></div>
> > </blockquote></div></div></div>
> > </div>
> >
> > --0000000000000d72080619d34a39--
> >
>
>
>
> > --000000000000dcc9a90619d4664c--