Re: /usr/src/sys/net/if_epair.c:181:6: error: ...

Mark Millard <[email protected]>
Newsgroups gmane.os.freebsd.devel.arm
Message-ID <[email protected]>
[Trying again after getting material from the wrong
commit the first time.]

On 2022-Mar-22, at 18:26, bob prohaska <[email protected]> wrote:

> A Pi2 running 
> FreeBSD www.zefox.net 12.3-STABLE FreeBSD 12.3-STABLE r371495 GENERIC  arm
> 
> 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))
>            ^
> 
> 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)
> 
> 
> 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 
> matters. 

QUOTE
author	Kristof Provost <[email protected]>	2022-03-17 02:35:13 +0000
committer	Kristof Provost <[email protected]>	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"


===
Mark Millard
marklmi at yahoo.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.