Date: Sat, 1 Jun 2024 09:51:37 -0400 From: Warner Losh <imp@bsdimp.com> To: Cy Schubert <Cy.Schubert@cschubert.com> Cc: Nuno Teixeira <eduardo@freebsd.org>, Warner Losh <imp@freebsd.org>, src-committers <src-committers@freebsd.org>, "<dev-commits-src-all@freebsd.org>" <dev-commits-src-all@freebsd.org>, "<dev-commits-src-main@freebsd.org>" <dev-commits-src-main@freebsd.org> Subject: Re: git: 108de784513d - main - Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC, not CLOCK_UPTIME Message-ID: <CANCZdfpp4sOHxygKuYF%2BpyBb8K_Nm3tXo75zpwo2e3w9hsAS9w@mail.gmail.com> In-Reply-To: <20240601133156.8EB804B0@slippy.cwsent.com> References: <202405311447.44VEl1G1078199@gitrepo.freebsd.org> <CAFDf7ULP1X_LgDOrKhMEFF7AgBQPPaJGhbRsaNcUpUOBo9JN9g@mail.gmail.com> <CANCZdfpMvorgKYx6pCL7_q6BW3AqZSDwryKHg_cV%2Byt_E-FbOQ@mail.gmail.com> <20240601133156.8EB804B0@slippy.cwsent.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--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 <Cy.Schubert@cschubert.c= om> wrote: > 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 <eduardo@freeb= 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! Warner Warner Warner > -- > Cheers, > Cy Schubert <Cy.Schubert@cschubert.com> > FreeBSD UNIX: <cy@FreeBSD.org> Web: https://FreeBSD.org > NTP: <cy@nwtime.org> Web: https://nwtime.org > > e^(i*pi)+1=3D0 > > > > > > Warner > > > > > > > Thanks > > > > > > Warner Losh <imp@freebsd.org> 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 <val@packett.cool> > > >> AuthorDate: 2024-05-31 14:45:02 +0000 > > >> Commit: Warner Losh <imp@FreeBSD.org> > > >> 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: <eduardo@FreeBSD.org> Web: 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">=3D > > <div dir=3D3D"ltr" class=3D3D"gmail_attr">On Sat, Jun 1, 2024, > 4:37=3DE2=3D80=3DAFAM =3D > > Nuno Teixeira <<a href=3D3D"mailto:eduardo@freebsd.org" > target=3D3D"_blank">=3D > > eduardo@freebsd.org</a>> wrote:<br></div><blockquote > class=3D3D"gmail_quot=3D > > e" style=3D3D"margin:0 0 0 .8ex;border-left:1px #ccc > solid;padding-left:1ex">=3D > > <div dir=3D3D"ltr"><div>Hello,</div><div><br></div><div>Having issues > buildin=3D > > g > graphics/mesa-dri:</div><div><br></div><div>../src/intel/common/xe/intel_= =3D > > gem.c:72:9: error: duplicate case value '4'<br>=3DC2=3DA0 =3DC2= =3DA072 | > =3D > > =3DC2=3DA0 =3DC2=3DA0case CLOCK_BOOTTIME:<br>=3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 | =3DC2=3DA0 > =3DC2=3DA0 =3D > > =3DC2=3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:81:25: note: ex= panded > from =3D > > macro 'CLOCK_BOOTTIME'<br>=3DC2=3DA0 =3DC2=3DA081 | #define > CLOCK_BOOTTIME =3D > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0CLOCK_MONOTONIC<b= 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 > ^<br>/usr/include/sys/_clock_id.h:56=3D > > :26: note: expanded from macro 'CLOCK_MONOTONIC'<br>=3DC2=3DA0 > =3DC2=3DA056=3D > > | #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 =3D= C2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > =3DC2=3D > > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 > ^<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=3D= A0 | =3DC2=3DA0 =3DC2=3DA0 > =3DC2=3D > > =3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:56:26: note: expande= d from > mac=3D > > ro 'CLOCK_MONOTONIC'<br>=3DC2=3DA0 =3DC2=3DA056 | #define > CLOCK_MONOTONIC =3D > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 4<br>=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 ^<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 are 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 #ccc > solid;padding-=3D > > left:1ex"><div dir=3D3D"ltr"><div><font color=3D3D"#888888">Thanks<br > clear=3D3D"=3D > > all"></font></div><div></div></div><br><div class=3D3D"gmail_quote"><di= v > dir=3D > > =3D3D"ltr" class=3D3D"gmail_attr">Warner Losh <<a href=3D3D"mailto: > imp@freebsd=3D > > .org" rel=3D3D"noreferrer" target=3D3D"_blank">imp@freebsd.org</a>> > escreveu=3D > > (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47):<br></div><blockquote > 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:<br> > > <br> > > URL: <a href=3D3D" > 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</a><br> > > <br> > > commit 108de784513d87bbe850e7b003a73e26b5b54caa<br> > > Author:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Val Packett <val@packett.cool= ><br> > > AuthorDate: 2024-05-31 14:45:02 +0000<br> > > Commit:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Warner Losh <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 cl= ocks > across =3D > > platforms<br> > > =3DC2=3DA0 =3DC2=3DA0 is kind of a mess, let's try not making it wo= rse.<br> > > <br> > > =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.<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> > > <br> > > =3DC2=3DA0 =3DC2=3DA0 On macOS, it'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 > `CLOCK_MONOTONIC` =3D > > for now.<br> > > <br> > > =3DC2=3DA0 =3DC2=3DA0 When we introduce a suspend-aware clock in the fu= ture, 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's what the name CLOCK_UPTIME imp= lies: 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 suspended= .<br> > > <br> > > =3DC2=3DA0 =3DC2=3DA0 Let's change the define right now to make sur= e > 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 exp= ected > change=3D > > s too.<br> > > <br> > > =3DC2=3DA0 =3DC2=3DA0 See <a href=3D3D" > 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</a><br> > > =3DC2=3DA0 =3DC2=3DA0 for more discussion.<br> > > <br> > > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0= =3DC2=3DA0 155f15118a77 > ("=3D > > clock_gettime: Add Linux aliases for CLOCK_*")<br> > > =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.")<br> > > =3DC2=3DA0 =3DC2=3DA0 Sponsored by:=3DC2=3DA0 =3DC2=3DA0<a href=3D3D" > https://www.patreon.com/=3D > > valpackett" rel=3D3D"noreferrer noreferrer" target=3D3D"_blank"> > https://www.pat=3D > > 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=3D3D"_blank"> > https://revi=3D > > 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=3DA= 0 =3DC2=3DA0 =3DC2=3DA0| 2 > +-<br=3D > > > > > =3DC2=3DA02 files changed, 4 insertions(+), 4 deletions(-)<br> > > <br> > > diff --git a/sys/compat/linux/linux_time.c > b/sys/compat/linux/linux_time.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 =3DC2= =3DA0 =3DC2=3DA0 *n =3D3D > CLOCK_REALTI=3D > > ME;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =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 =3DC= 2=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*n =3D3D > CLOCK_UPTIME=3D > > ;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =3DA0 =3DC2=3DA0 break;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_PROCESS_CP= UTIME_ID:<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =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 =3DC2= =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 =3DC= 2=3DA0 =3DC2=3DA0*n =3D3D > CLOCK_MONOTO=3D > > NIC_FAST;<br> > > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0*n =3D3D > CLOCK_UPTIME=3D > > _FAST;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =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 =3DC= 2=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*n =3D3D > CLOCK_MONOTO=3D > > NIC;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =3DA0 =3DC2=3DA0 break;<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_REALTIME_A= LARM:<br> > > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME_A= LARM:<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=3DC2= =3DA0 =3DC2=3DA0 =3DC2=3DA0 > =3DC2=3D > > =3DA0 =3DC2=3DA0 CLOCK_UPTIME<br> > > +#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC2= =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_REAL= TIME_COARSE=3DC2=3DA0 > =3DC2=3DA0=3D > > CLOCK_REALTIME_FAST<br> > > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_MONO= TONIC_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 <eduardo@FreeBSD.org>=3DC2=3DA0 =3DC2=3DA= 0Web:=3DC2=3DA0 > <a h=3D > > ref=3D3D"https://FreeBSD.org" rel=3D3D"noreferrer noreferrer" > target=3D3D"_blank"=3D > > >https://FreeBSD.org</a><br></font></div></div></div></div> > > </blockquote></div></div></div> > > </div> > > > > --0000000000000d72080619d34a39-- > > > > > --000000000000dcc9a90619d4664c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote">= <div dir=3D"ltr" class=3D"gmail_attr">On Sat, Jun 1, 2024 at 9:31=E2=80=AFA= M Cy Schubert <<a href=3D"mailto:Cy.Schubert@cschubert.com">Cy.Schubert@= cschubert.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" sty= 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<br> om><br> , Warner Losh writes:<br> > --0000000000000d72080619d34a39<br> > Content-Type: text/plain; charset=3D"UTF-8"<br> > Content-Transfer-Encoding: quoted-printable<br> ><br> > On Sat, Jun 1, 2024, 4:37=3DE2=3D80=3DAFAM Nuno Teixeira <<a href= =3D"mailto:eduardo@freebsd.org" target=3D"_blank">eduardo@freebsd.org</a>&g= t; wr=3D<br> > ote:<br> ><br> > > Hello,<br> > ><br> > > Having issues building graphics/mesa-dri:<br> > ><br> > > ../src/intel/common/xe/intel_gem.c:72:9: error: duplicate case va= lue '4'<br> > >=C2=A0 =C2=A0 72 |=C2=A0 =C2=A0 case CLOCK_BOOTTIME:<br> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^<br= > > > /usr/include/sys/_clock_id.h:81:25: note: expanded from macro<br> > > 'CLOCK_BOOTTIME'<br> > >=C2=A0 =C2=A0 81 | #define CLOCK_BOOTTIME=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 CLOCK_MONOTONIC<br> > >=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^<br> > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro<br> > > 'CLOCK_MONOTONIC'<br> > >=C2=A0 =C2=A0 56 | #define CLOCK_MONOTONIC=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A04<br> > >=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^<br> > > ../src/intel/common/xe/intel_gem.c:66:9: note: previous case defi= ned here<br> > >=C2=A0 =C2=A0 66 |=C2=A0 =C2=A0 case CLOCK_MONOTONIC:<br> > >=C2=A0 =C2=A0 =C2=A0 =C2=A0|=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0^<br= > > > /usr/include/sys/_clock_id.h:56:26: note: expanded from macro<br> > > 'CLOCK_MONOTONIC'<br> > >=C2=A0 =C2=A0 56 | #define CLOCK_MONOTONIC=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A04<br> > >=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^<br> > > 1 error generated.<br> > ><br> ><br> > Mesa needs to be updated to not assume these are distinct values.<br> <br> You should be able to resolve this with,<br> <br> --- src/intel/common/xe/intel_gem.c.orig=C2=A0 =C2=A0 =C2=A0 =C2=A0 2024-05= -22 09:48:39.000000000 -0700<br> +++ src/intel/common/xe/intel_gem.c=C2=A0 =C2=A0 =C2=A02024-06-01 06:28:22.= 268439000 -0700<br> @@ -69,8 +69,10 @@<br> =C2=A0#endif<br> =C2=A0 =C2=A0 case CLOCK_REALTIME:<br> =C2=A0#ifdef CLOCK_BOOTTIME<br> +#if CLOCK_BOOTTIME !=3D CLOCK_MONOTONIC<br> =C2=A0 =C2=A0 case CLOCK_BOOTTIME:<br> =C2=A0#endif<br> +#endif<br> =C2=A0#ifdef CLOCK_TAI<br> =C2=A0 =C2=A0 case CLOCK_TAI:<br> =C2=A0#endif<br></blockquote><div><br></div><div>Yea, that should do it. I = was going to look at this when I got back from BSDcan (mostly because</div>= <div>my talk is this morning), but thanks for beating me to it.=C2=A0 I wok= e up grump and it was bugging me</div><div>on the=C2=A0walk over to the con= ference I was a little short in my first reply, but since you proposed a</d= iv><div>fix, I feel less guilty... :) Thanks!</div><div><br></div><div>Warn= er</div><div><br></div><div>Warner</div><div><br></div><div>Warner=C2=A0</d= iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord= er-left:1px solid rgb(204,204,204);padding-left:1ex"> -- <br> Cheers,<br> Cy Schubert <<a href=3D"mailto:Cy.Schubert@cschubert.com" target=3D"_bla= nk">Cy.Schubert@cschubert.com</a>><br> FreeBSD UNIX:=C2=A0 <cy@FreeBSD.org>=C2=A0 =C2=A0Web:=C2=A0 <a href= =3D"https://FreeBSD.org" rel=3D"noreferrer" target=3D"_blank">https://FreeB= SD.org</a><br> NTP:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<<a href=3D"mailto:cy@nwtim= e.org" target=3D"_blank">cy@nwtime.org</a>>=C2=A0 =C2=A0 Web:=C2=A0 <a h= ref=3D"https://nwtime.org" rel=3D"noreferrer" target=3D"_blank">https://nwt= ime.org</a><br> <br> =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<br> <br> <br> ><br> > Warner<br> ><br> ><br> > > Thanks<br> > ><br> > > Warner Losh <<a href=3D"mailto:imp@freebsd.org" target=3D"_bla= nk">imp@freebsd.org</a>> escreveu (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47= =3D<br> > ):<br> > ><br> > >> The branch main has been updated by imp:<br> > >><br> > >> URL:<br> > >> <a href=3D"https://cgit.FreeBSD.org/src/commit/?id=3D3D108de7= 84513d87bbe850e7b003a73e=3D" rel=3D"noreferrer" target=3D"_blank">https://c= git.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73e=3D</a><br= > > 26b5b54caa<br> > >><br> > >> commit 108de784513d87bbe850e7b003a73e26b5b54caa<br> > >> Author:=C2=A0 =C2=A0 =C2=A0Val Packett <val@packett.cool&g= t;<br> > >> AuthorDate: 2024-05-31 14:45:02 +0000<br> > >> Commit:=C2=A0 =C2=A0 =C2=A0Warner Losh <imp@FreeBSD.org>= ;<br> > >> CommitDate: 2024-05-31 14:45:02 +0000<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0Redefine CLOCK_BOOTTIME to alias CLOCK_MON= OTONIC, not CLOCK_UPTIME<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0The suspend-awareness situation with monot= onic clocks across platfor=3D<br> > ms<br> > >>=C2=A0 =C2=A0 =C2=A0is kind of a mess, let's try not makin= g it worse.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0On Linux, CLOCK_MONOTONIC does NOT count s= uspended time, and<br> > >>=C2=A0 =C2=A0 =C2=A0CLOCK_BOOTTIME was introduced to INCLUDE s= uspended time.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0On OpenBSD, CLOCK_MONOTONIC DOES count sus= pended time, and<br> > >> CLOCK_UPTIME<br> > >>=C2=A0 =C2=A0 =C2=A0was introduced to EXCLUDE suspended time.<= br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0On macOS, it's the same as OpenBSD, bu= t with CLOCK_UPTIME_RAW.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0Right now, we do not have a monotonic cloc= k that counts suspended<br> > >> time.<br> > >>=C2=A0 =C2=A0 =C2=A0We have CLOCK_UPTIME as a distinct ID alia= s, and CLOCK_BOOTTIME as a<br> > >>=C2=A0 =C2=A0 =C2=A0preprocessor alias, both being effectively= `CLOCK_MONOTONIC` for now=3D<br> > .<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0When we introduce a suspend-aware clock in= the future, it would make=3D<br> >=C2=A0 a<br> > >>=C2=A0 =C2=A0 =C2=A0lot more sense to do it the OpenBSD/macOS = way, i.e. to make<br> > >>=C2=A0 =C2=A0 =C2=A0CLOCK_MONOTONIC include suspended time and= make CLOCK_UPTIME exclude<br> > >> it,<br> > >>=C2=A0 =C2=A0 =C2=A0because that's what the name CLOCK_UPT= IME implies: a deviation from<br> > >> the<br> > >>=C2=A0 =C2=A0 =C2=A0default intended for the uptime command to= allow it to only show the<br> > >>=C2=A0 =C2=A0 =C2=A0time the system was actually up and not su= spended.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0Let's change the define right now to m= ake sure software using the<br> > >> define<br> > >>=C2=A0 =C2=A0 =C2=A0would not end up using the ID of the wrong= clock in the future, and<br> > >> fix<br> > >>=C2=A0 =C2=A0 =C2=A0the IDs in the Linux compat code to match = the expected changes too.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0See <a href=3D"https://bugzilla.mozilla.or= g/show_bug.cgi?id=3D3D1824084" rel=3D"noreferrer" target=3D"_blank">https:/= /bugzilla.mozilla.org/show_bug.cgi?id=3D3D1824084</a><br> > >>=C2=A0 =C2=A0 =C2=A0for more discussion.<br> > >><br> > >>=C2=A0 =C2=A0 =C2=A0Fixes:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 1= 55f15118a77 ("clock_gettime: Add Linux aliases for<br> > >> CLOCK_*")<br> > >>=C2=A0 =C2=A0 =C2=A0Fixes:=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2= 5ada637362d ("Map Linux CLOCK_BOOTTIME to native<br> > >> CLOCK_UPTIME.")<br> > >>=C2=A0 =C2=A0 =C2=A0Sponsored by:=C2=A0 =C2=A0<a href=3D"https= ://www.patreon.com/valpackett" rel=3D"noreferrer" target=3D"_blank">https:/= /www.patreon.com/valpackett</a><br> > >>=C2=A0 =C2=A0 =C2=A0Reviewed by:=C2=A0 =C2=A0 kib, imp<br> > >>=C2=A0 =C2=A0 =C2=A0Differential Revision:=C2=A0 <a href=3D"ht= tps://reviews.freebsd.org/D39270" rel=3D"noreferrer" target=3D"_blank">http= s://reviews.freebsd.org/D39270</a><br> > >> ---<br> > >>=C2=A0 sys/compat/linux/linux_time.c | 6 +++---<br> > >>=C2=A0 sys/sys/_clock_id.h=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0| 2 +-<br> > >>=C2=A0 2 files changed, 4 insertions(+), 4 deletions(-)<br> > >><br> > >> diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux= /linux_time=3D<br> > .c<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, clo= ckid_t l)<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= *n =3D3D CLOCK_REALTIME;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= break;<br> > >>=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;<br> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = =3D3D CLOCK_UPTIME;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= break;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_PROCESS_CPU= TIME_ID:<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= *n =3D3D CLOCK_PROCESS_CPUTIME_ID;<br> > >> @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, c= lockid_t l)<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= break;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_MONOTONIC_C= OARSE:<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_MONOTONIC_R= AW:<br> > >> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = =3D3D CLOCK_MONOTONIC_FAST;<br> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = =3D3D CLOCK_UPTIME_FAST;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= break;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_BOOTTIME:<b= r> > >> -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = =3D3D CLOCK_UPTIME;<br> > >> +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0*n = =3D3D CLOCK_MONOTONIC;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= break;<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_REALTIME_AL= ARM:<br> > >>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0case LINUX_CLOCK_BOOTTIME_AL= ARM:<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> > >>=C2=A0 =C2=A0* Linux compatible names.<br> > >>=C2=A0 =C2=A0*/<br> > >>=C2=A0 #if __BSD_VISIBLE<br> > >> -#define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_BOOTTIME=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_UPTIME<br> > >> +#define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_BOOTTIME=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_MONOTONIC<br> > >>=C2=A0 #define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_REALTIME_COARS= E=C2=A0 =C2=A0CLOCK_REALTIME_FAST<br> > >>=C2=A0 #define=C2=A0 =C2=A0 =C2=A0 =C2=A0 CLOCK_MONOTONIC_COAR= SE=C2=A0 CLOCK_MONOTONIC_FAST<br> > >>=C2=A0 #endif<br> > >><br> > >><br> > ><br> > > --<br> > > Nuno Teixeira<br> > > FreeBSD UNIX:=C2=A0 <eduardo@FreeBSD.org>=C2=A0 =C2=A0Web:= =C2=A0 <a href=3D"https://FreeBSD.org" rel=3D"noreferrer" target=3D"_blank"= >https://FreeBSD.org</a><br> > ><br> ><br> > --0000000000000d72080619d34a39<br> > Content-Type: text/html; charset=3D"UTF-8"<br> > Content-Transfer-Encoding: quoted-printable<br> ><br> > <div dir=3D3D"ltr"><div dir=3D3D"auto">= ;<div><br><br><div class=3D3D"gmail_quote"&g= t;=3D<br> > <div dir=3D3D"ltr" class=3D3D"gmail_attr">On= Sat, Jun 1, 2024, 4:37=3DE2=3D80=3DAFAM =3D<br> > Nuno Teixeira &lt;<a href=3D3D"mailto:<a href=3D"mailto:ed= uardo@freebsd.org" target=3D"_blank">eduardo@freebsd.org</a>" target= =3D3D"_blank">=3D<br> > <a href=3D"mailto:eduardo@freebsd.org" target=3D"_blank">eduardo@freeb= sd.org</a></a>&gt; wrote:<br></div><blockquote cla= ss=3D3D"gmail_quot=3D<br> > e" style=3D3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p= adding-left:1ex">=3D<br> > <div dir=3D3D"ltr"><div>Hello,</div><di= v><br></div><div>Having issues buildin=3D<br> > g graphics/mesa-dri:</div><div><br></div><d= iv>../src/intel/common/xe/intel_=3D<br> > gem.c:72:9: error: duplicate case value &#39;4&#39;<br>= =3DC2=3DA0 =3DC2=3DA072 | =3D<br> > =3DC2=3DA0 =3DC2=3DA0case CLOCK_BOOTTIME:<br>=3DC2=3DA0 =3DC2=3D= A0 =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3D<br> > =3DC2=3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:81:25: n= ote: expanded from =3D<br> > macro &#39;CLOCK_BOOTTIME&#39;<br>=3DC2=3DA0 =3DC2=3DA08= 1 | #define CLOCK_BOOTTIME =3D<br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0CLOCK_MONOTONIC&= lt;br>=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 |=3D<br> >=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<br> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 ^<br&g= t;/usr/include/sys/_clock_id.h:56=3D<br> > :26: note: expanded from macro &#39;CLOCK_MONOTONIC&#39;<br= >=3DC2=3DA0 =3DC2=3DA056=3D<br> >=C2=A0 | #define CLOCK_MONOTONIC =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2= =3DA0 4<br>=3DC2=3DA0 =3DC2=3DA0 =3D<br> > =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 = =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D<br> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= 0 ^<br>../src/intel/common/xe/i=3D<br> > ntel_gem.c:66:9: note: previous case defined here<br>=3DC2=3DA0 = =3DC2=3DA066 | =3DC2=3D<br> > =3DA0 =3DC2=3DA0case CLOCK_MONOTONIC:<br>=3DC2=3DA0 =3DC2=3DA0 = =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D<br> > =3DA0 =3DC2=3DA0 ^<br>/usr/include/sys/_clock_id.h:56:26: note: = expanded from mac=3D<br> > ro &#39;CLOCK_MONOTONIC&#39;<br>=3DC2=3DA0 =3DC2=3DA056 = | #define CLOCK_MONOTONIC =3D<br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 4<br>=3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 | =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D<br> > =3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= 0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D<br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 ^<br>1 error generated.</div= ></div></blockquote></div>=3D<br> > </div><div dir=3D3D"auto"><br></div>= <div dir=3D3D"auto"><div class=3D3D"gmail_quo=3D<br= > > te"><div>Mesa needs to be updated to not assume these ar= e distinct values.<=3D<br> > /div><div><br></div><div>Warner</div>= <div>=3DC2=3DA0</div><blockquote class=3D3D"=3D<br> > gmail_quote" style=3D3D"margin:0 0 0 .8ex;border-left:1px #c= cc solid;padding-=3D<br> > left:1ex"><div dir=3D3D"ltr"><div><fo= nt color=3D3D"#888888">Thanks<br clear=3D3D"=3D<br> > all"></font></div><div></div></div&= gt;<br><div class=3D3D"gmail_quote"><div dir=3D<br= > > =3D3D"ltr" class=3D3D"gmail_attr">Warner Losh &= amp;lt;<a href=3D3D"mailto:<a href=3D"mailto:imp@freebsd" target=3D= "_blank">imp@freebsd</a>=3D<br> > .org" rel=3D3D"noreferrer" target=3D3D"_blank"= ;><a href=3D"mailto:imp@freebsd.org" target=3D"_blank">imp@freebsd.org</= a></a>&gt; escreveu=3D<br> >=C2=A0 (sexta, 31/05/2024 =3DC3=3DA0(s) 15:47):<br></div>&l= t;blockquote class=3D3D"gmail_q=3D<br> > uote" style=3D3D"margin:0px 0px 0px 0.8ex;border-left:1px so= lid rgb(204,204,2=3D<br> > 04);padding-left:1ex">The branch main has been updated by imp:= <br><br> > <br><br> > URL: <a href=3D3D"<a href=3D"https://cgit.FreeBSD.org/src/comm= it/?id=3D3D108de784513d87bbe=3D" rel=3D"noreferrer" target=3D"_blank">https= ://cgit.FreeBSD.org/src/commit/?id=3D3D108de784513d87bbe=3D</a><br> > 850e7b003a73e26b5b54caa" rel=3D3D"noreferrer noreferrer"= ; target=3D3D"_blank">ht=3D<br> > tps://<a href=3D"http://cgit.FreeBSD.org/src/commit/?id=3D3D108de78451= 3d87bbe850e7b003a73e26b5b=3D" rel=3D"noreferrer" target=3D"_blank">cgit.Fre= eBSD.org/src/commit/?id=3D3D108de784513d87bbe850e7b003a73e26b5b=3D</a><br> > 54caa</a><br><br> > <br><br> > commit 108de784513d87bbe850e7b003a73e26b5b54caa<br><br> > Author:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Val Packett &lt;val@packett= .cool&gt;<br><br> > AuthorDate: 2024-05-31 14:45:02 +0000<br><br> > Commit:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0Warner Losh &lt;imp@FreeBSD= .org&gt;<br><br> > CommitDate: 2024-05-31 14:45:02 +0000<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 Redefine CLOCK_BOOTTIME to alias CLOCK_MONOTONIC= , not CLOCK_U=3D<br> > PTIME<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 The suspend-awareness situation with monotonic c= locks across =3D<br> > platforms<br><br> > =3DC2=3DA0 =3DC2=3DA0 is kind of a mess, let&#39;s try not making = it worse.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 On Linux, CLOCK_MONOTONIC does NOT count suspend= ed time, and<=3D<br> > br><br> > =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME was introduced to INCLUDE suspend= ed time.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 On OpenBSD, CLOCK_MONOTONIC DOES count suspended= time, and CL=3D<br> > OCK_UPTIME<br><br> > =3DC2=3DA0 =3DC2=3DA0 was introduced to EXCLUDE suspended time.<br&= gt;<br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 On macOS, it&#39;s the same as OpenBSD, but = with CLOCK_UPTIME=3D<br> > _RAW.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 Right now, we do not have a monotonic clock that= counts suspe=3D<br> > nded time.<br><br> > =3DC2=3DA0 =3DC2=3DA0 We have CLOCK_UPTIME as a distinct ID alias, and= CLOCK_BOOTTI=3D<br> > ME as a<br><br> > =3DC2=3DA0 =3DC2=3DA0 preprocessor alias, both being effectively `CLOC= K_MONOTONIC` =3D<br> > for now.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 When we introduce a suspend-aware clock in the f= uture, it wou=3D<br> > ld make a<br><br> > =3DC2=3DA0 =3DC2=3DA0 lot more sense to do it the OpenBSD/macOS way, i= .e. to make<b=3D<br> > r><br> > =3DC2=3DA0 =3DC2=3DA0 CLOCK_MONOTONIC include suspended time and make = CLOCK_UPTIME =3D<br> > exclude it,<br><br> > =3DC2=3DA0 =3DC2=3DA0 because that&#39;s what the name CLOCK_UPTIM= E implies: a devi=3D<br> > ation from the<br><br> > =3DC2=3DA0 =3DC2=3DA0 default intended for the uptime command to allow= it to only s=3D<br> > how the<br><br> > =3DC2=3DA0 =3DC2=3DA0 time the system was actually up and not suspende= d.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 Let&#39;s change the define right now to mak= e sure software u=3D<br> > sing the define<br><br> > =3DC2=3DA0 =3DC2=3DA0 would not end up using the ID of the wrong clock= in the futur=3D<br> > e, and fix<br><br> > =3DC2=3DA0 =3DC2=3DA0 the IDs in the Linux compat code to match the ex= pected change=3D<br> > s too.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 See <a href=3D3D"<a href=3D"https://bugz= illa.mozilla.org/show_bug.cgi?id=3D" rel=3D"noreferrer" target=3D"_blank">h= ttps://bugzilla.mozilla.org/show_bug.cgi?id=3D</a><br> > =3D3D1824084" rel=3D3D"noreferrer noreferrer" target=3D= 3D"_blank"><a href=3D"https://bugzill" rel=3D"noreferrer" targ= et=3D"_blank">https://bugzill</a>=3D<br> > <a href=3D"http://a.mozilla.org/show_bug.cgi?id=3D3D1824084" rel=3D"no= referrer" target=3D"_blank">a.mozilla.org/show_bug.cgi?id=3D3D1824084</a>&l= t;/a><br><br> > =3DC2=3DA0 =3DC2=3DA0 for more discussion.<br><br> > <br><br> > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= 0 =3DC2=3DA0 155f15118a77 (&quot;=3D<br> > clock_gettime: Add Linux aliases for CLOCK_*&quot;)<br><br> > =3DC2=3DA0 =3DC2=3DA0 Fixes:=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA= 0 =3DC2=3DA0 25ada637362d (&quot;=3D<br> > 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"<a href=3D"https://www.patreon.com/=3D" rel=3D"noreferrer" target=3D= "_blank">https://www.patreon.com/=3D</a><br> > valpackett" rel=3D3D"noreferrer noreferrer" target=3D3D= "_blank"><a href=3D"https://www.pat" rel=3D"noreferrer" target= =3D"_blank">https://www.pat</a>=3D<br> > <a href=3D"http://reon.com/valpackett" rel=3D"noreferrer" target=3D"_b= lank">reon.com/valpackett</a></a><br><br> > =3DC2=3DA0 =3DC2=3DA0 Reviewed by:=3DC2=3DA0 =3DC2=3DA0 kib, imp<br= ><br> > =3DC2=3DA0 =3DC2=3DA0 Differential Revision:=3DC2=3DA0 <a href=3D3D= "<a href=3D"https://reviews.freeb" rel=3D"noreferrer" target=3D"_blank= ">https://reviews.freeb</a>=3D<br> > <a href=3D"http://sd.org/D39270" rel=3D"noreferrer" target=3D"_blank">= sd.org/D39270</a>" rel=3D3D"noreferrer noreferrer" target=3D= 3D"_blank"><a href=3D"https://revi" rel=3D"noreferrer" target= =3D"_blank">https://revi</a>=3D<br> > <a href=3D"http://ews.freebsd.org/D39270" rel=3D"noreferrer" target=3D= "_blank">ews.freebsd.org/D39270</a></a><br><br> > ---<br><br> > =3DC2=3DA0sys/compat/linux/linux_time.c | 6 +++---<br><br> > =3DC2=3DA0sys/sys/_clock_id.h=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D= A0 =3DC2=3DA0 =3DC2=3DA0| 2 +-<br=3D<br> > ><br> > =3DC2=3DA02 files changed, 4 insertions(+), 4 deletions(-)<br><b= r> > <br><br> > diff --git a/sys/compat/linux/linux_time.c b/sys/compat/linux/linux_ti= me.c<=3D<br> > br><br> > index e9e5cf075210..f4dd26dd3d2a 100644<br><br> > --- a/sys/compat/linux/linux_time.c<br><br> > +++ b/sys/compat/linux/linux_time.c<br><br> > @@ -287,7 +287,7 @@ linux_to_native_clockid(clockid_t *n, clockid_t l)= <br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 *n =3D3D CLOCK_REALTI=3D<br> > ME;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 break;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= :<br><br> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D<br> > NIC;<br><br> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D<br> > ;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 break;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_PROCESS_C= PUTIME_ID:<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 *n =3D3D CLOCK_PROCES=3D<br> > S_CPUTIME_ID;<br><br> > @@ -300,10 +300,10 @@ linux_to_native_clockid(clockid_t *n, clockid_t = l)<br=3D<br> > ><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 break;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= _COARSE:<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_MONOTONIC= _RAW:<br><br> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D<br> > NIC_FAST;<br><br> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D<br> > _FAST;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 break;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME:= <br><br> > -=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_UPTIME=3D<br> > ;<br><br> > +=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3D= C2=3DA0 =3DC2=3DA0*n =3D3D CLOCK_MONOTO=3D<br> > NIC;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC= 2=3DA0 =3DC2=3DA0 break;<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_REALTIME_= ALARM:<br><br> > =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 case LINUX_CLOCK_BOOTTIME_= ALARM:<br><br> > diff --git a/sys/sys/_clock_id.h b/sys/sys/_clock_id.h<br><br> > index 47a551428dc3..728346a0f0ab 100644<br><br> > --- a/sys/sys/_clock_id.h<br><br> > +++ b/sys/sys/_clock_id.h<br><br> > @@ -78,7 +78,7 @@<br><br> > =3DC2=3DA0 * Linux compatible names.<br><br> > =3DC2=3DA0 */<br><br> > =3DC2=3DA0#if __BSD_VISIBLE<br><br> > -#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC= 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D<br> > =3DA0 =3DC2=3DA0 CLOCK_UPTIME<br><br> > +#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_BOOTTIME=3DC= 2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3D<br> > =3DA0 =3DC2=3DA0 CLOCK_MONOTONIC<br><br> > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_REA= LTIME_COARSE=3DC2=3DA0 =3DC2=3DA0=3D<br> > CLOCK_REALTIME_FAST<br><br> > =3DC2=3DA0#define=3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 CLOCK_MON= OTONIC_COARSE=3DC2=3DA0 CLOCK=3D<br> > _MONOTONIC_FAST<br><br> > =3DC2=3DA0#endif<br><br> > <br><br> > </blockquote></div><br clear=3D3D"all"><= ;br><span class=3D3D"gmail_signature_pre=3D<br> > fix">-- </span><br><div dir=3D3D"ltr"= class=3D3D"gmail_signature"><div dir=3D3D"l=3D<br> > tr"><div><font color=3D3D"#888888">Nuno = Teixeira</font></div><div><div><font =3D<br> > color=3D3D"#888888"><br> > FreeBSD UNIX:=3DC2=3DA0 &lt;eduardo@FreeBSD.org&gt;=3DC2=3DA0 = =3DC2=3DA0Web:=3DC2=3DA0 <a h=3D<br> > ref=3D3D"<a href=3D"https://FreeBSD.org" rel=3D"noreferrer" targe= t=3D"_blank">https://FreeBSD.org</a>" rel=3D3D"noreferrer norefer= rer" target=3D3D"_blank"=3D<br> > ><a href=3D"https://FreeBSD.org" rel=3D"noreferrer" target=3D"_blan= k">https://FreeBSD.org</a></a><br></font></div><= /div></div></div><br> > </blockquote></div></div></div><br> > </div><br> ><br> > --0000000000000d72080619d34a39--<br> ><br> <br> <br> </blockquote></div></div> --000000000000dcc9a90619d4664c--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CANCZdfpp4sOHxygKuYF%2BpyBb8K_Nm3tXo75zpwo2e3w9hsAS9w>