Date: Tue, 22 Mar 2022 20:16:42 -0700 From: Mark Millard <marklmi@yahoo.com> To: bob prohaska <fbsd@www.zefox.net>, "kp@freebsd.org" <kp@FreeBSD.org> Cc: freebsd-arm@freebsd.org Subject: Re: /usr/src/sys/net/if_epair.c:181:6: error: ... Message-ID: <43A846B1-4AD4-48C7-ADAB-82D1CAFF6DDB@yahoo.com> In-Reply-To: <20220323012657.GA82109@www.zefox.net> References: <20220323012657.GA82109@www.zefox.net>
next in thread | previous in thread | raw e-mail | index | archive | help
[Trying again after getting material from the wrong commit the first time.] On 2022-Mar-22, at 18:26, bob prohaska <fbsd@www.zefox.net> wrote: > A Pi2 running=20 > FreeBSD www.zefox.net 12.3-STABLE FreeBSD 12.3-STABLE r371495 GENERIC = arm >=20 > stops buildkernel with: > --- if_epair.o --- > /usr/src/sys/net/if_epair.c:181:6: error: implicit declaration of = function 'atomic_testandclear_long' is invalid in C99 = [-Werror,-Wimplicit-function-declaration] > if (atomic_testandclear_long(&q->state, BIT_MBUF_QUEUED)) > ^ >=20 > Not sure if this is specific to the Raspberry Pi 2, it didn't show up = on a pair of Pi3's > and a single Pi4. The system is still using svnlite, info reports > root@www:/usr/src # svnlite info > Path: . > Working Copy Root Path: /usr/src > URL: svn://svn.freebsd.org/base/stable/12 > Relative URL: ^/stable/12 > Repository Root: svn://svn.freebsd.org/base > Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f > Revision: 371771 > Node Kind: directory > Schedule: normal > Last Changed Author: 0mp > Last Changed Rev: 371771 > Last Changed Date: 2022-03-22 15:28:40 -0700 (Tue, 22 Mar 2022) >=20 >=20 > Didn't see anything similar on bugs.freebsd.org, if it's worth a bug = report or > there's a workaround please post. It was built using WITH_META_MODE if = that=20 > matters.=20 QUOTE author Kristof Provost <kp@FreeBSD.org> 2022-03-17 02:35:13 = +0000 committer Kristof Provost <kp@FreeBSD.org> 2022-03-20 = 00:25:06 +0000 commit b1a3f8dccb6203036b7ee81201fd5b5a8de36f0d (patch) . . . if_epair: build fix 66acf7685b failed to build on riscv (and mips). This is because the atomic_testandset_int() (and friends) functions do not exist there. Happily those platforms do have the long variant, so switch to that. END QUOTE broke things for stable/12 by adding the atomic_testandclear_long usage without defining it as well. It goes like this: path: root/sys/arm/include/atomic.h Commit message (Expand) Author Age Files Lines * MFC r341787 by hselasky: Implement atomic_swap_xxx() for all = platforms. Andriy Gapon 2019-10-24 1 -0/+7 * Remove arm-specific implementations of atomic_load/store_xxx() = now that Ian Lepore 2017-12-20 1 -27/+0 . . . So not updated in a long time. But for armv7 and the like, it includes: path: root/sys/arm/include/atomic-v6.h Commit message (Expand) Author Age Files Lines * MFC r352938: Ian Lepore 2019-12-07 1 = -100/+256 * MFC r341679: Michal Meloun 2018-12-14 1 -1/+1 . . . Also not updated in a long time. sys/arm/include/atomic-v6.h has various "atomic_testand" examples ( sys/arm/include/atomic.h does not ): atomic_testandset_32 atomic_testandset_int atomic_testandset_long atomic_testandset_64 But no examples of "atomic_testandclear" =3D=3D=3D Mark Millard marklmi at yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43A846B1-4AD4-48C7-ADAB-82D1CAFF6DDB>