Re: Question about "asm/rwonce.h: No such file or directory"

From: Xiao Yang
Date: Wed Nov 13 2019 - 09:57:31 EST


On 11/13/19 4:54 PM, Masahiro Yamada wrote:
On Wed, Nov 13, 2019 at 5:36 PM Xiao Yang <ice_yangxiao@xxxxxxx> wrote:
On 11/13/19 3:53 PM, Masahiro Yamada wrote:
On Wed, Nov 13, 2019 at 4:17 PM Xiao Yang <ice_yangxiao@xxxxxxx> wrote:
On 11/13/19 2:57 PM, Masahiro Yamada wrote:
Sorry, I really do not understand what you are doing.

include/linux/compiler.h is only for kernel-space.
Shrug if a user-land program includes it.
Hi Masahiro,

For building tools/bpf, it is good to fix the compiler error by Daniel's
patch(i.e. use linux/filter from linux header).

linux/compiler.h may be used by other code in kernel. Is it possible to
trigger the same error when the other code

including linux/compiler.h is built? Is this kind of code able to find
the location of <asm/rwonce.h>?
<asm/rwonce.h> is also kernel-only header.

The kernel code can find <asm/rwonce.h>, but user-land code cannot.
Hi Masahiro,

Sorry, I am not familar with it.

Thanks a lot for your explanation and I have seen the LINUXINCLUDE
variable in Makefile.

I will try to send a patch as Daniel suggested.

Best Regards,

Xiao Yang

Hmm, digging into the git history,
this include path was added by the following commit:


commit d7475de58575c904818efa369c82e88c6648ce2e
Author: Kamal Mostafa <kamal@xxxxxxxxxxxxx>
Date: Wed Nov 11 14:24:27 2015 -0800

tools/net: Use include/uapi with __EXPORTED_HEADERS__

Use the local uapi headers to keep in sync with "recently" added #define's
(e.g. SKF_AD_VLAN_TPID). Refactored CFLAGS, and bpf_asm doesn't need -I.

Fixes: 3f356385e8a4 ("filter: bpf_asm: add minimal bpf asm tool")
Signed-off-by: Kamal Mostafa <kamal@xxxxxxxxxxxxx>
Acked-by: Daniel Borkmann <daniel@xxxxxxxxxxxxx>
Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>



I am not sure how big a deal it is,
but it could be a problem on old distros??

Hi Daniel, Masahiro


Could we include the linux/filter.h generated by "make headers_install" as a higher priority?

(PS: According to above commit, just ensure that tools/bpf keeps in sync with new linux header as far as possible).

and then use the linux/filter.h in system if kernel doesn't provide linux/filter.h by "make headers_install".

--------------------------------------------------------------------------------------------------------------------

diff --git a/tools/bpf/Makefile b/tools/bpf/Makefile
index 5d1995fd369c..1e0c768132af 100644
--- a/tools/bpf/Makefile
+++ b/tools/bpf/Makefile
@@ -10,7 +10,7 @@ MAKE = make
ÂINSTALL ?= install

ÂCFLAGS += -Wall -O2
-CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/include/uapi -I$(srctree)/include
+CFLAGS += -I$(srctree)/usr/include

Â# This will work when bpf is built in tools env. where srctree
Â# isn't set and when invoked from selftests build, where srctree

---------------------------------------------------------------------------------------------------------------------


Best Regards,

Xiao Yang