Message ID | 20241020031422.46894-1-kerneljasonxing@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | BPF |
Headers | show |
Series | [bpf-next] bpf: handle MADV_PAGEOUT error in uprobe_multi.c | expand |
On Sun, Oct 20, 2024 at 11:14 AM Jason Xing <kerneljasonxing@gmail.com> wrote: > > From: Jason Xing <kernelxing@tencent.com> > > When I compiled the tools/testing/selftests/bpf, the following error > pops out: > uprobe_multi.c: In function ‘trigger_uprobe’: > uprobe_multi.c:109:26: error: ‘MADV_PAGEOUT’ undeclared (first use in this function); did you mean ‘MADV_RANDOM’? > madvise(addr, page_sz, MADV_PAGEOUT); > ^~~~~~~~~~~~ > MADV_RANDOM > > We can see MADV_PAGEOUT existing in mman-common.h on x86 arch, so > including this header file solves this compilation error. > > Signed-off-by: Jason Xing <kernelxing@tencent.com> > --- > tools/testing/selftests/bpf/uprobe_multi.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c > index c7828b13e5ff..b0e11ffe0e1c 100644 > --- a/tools/testing/selftests/bpf/uprobe_multi.c > +++ b/tools/testing/selftests/bpf/uprobe_multi.c > @@ -5,6 +5,7 @@ > #include <stdbool.h> > #include <stdint.h> > #include <sys/mman.h> > +#include <mman-common.h> uprobe_multi.c:8:10: fatal error: mman-common.h: No such file or directory 61 8 | #include <mman-common.h> 62 | ^~~~~~~~~~~~~~~ After seeing the error that CI reported to me, I realized that I did cp /usr/include/asm-generic/mman-common.h to /usr/include/mman-common.h. If I try "#include <asm-generic/mman-common.h>", then I will see redefinition error: tools/include/uapi/asm-generic/mman-common.h:26: error: "MAP_POPULATE" redefined [-Werror] #define MAP_POPULATE 0x008000 /* populate (prefault) pagetables */ In file included from /usr/include/sys/mman.h:41, from uprobe_multi.c:7: /usr/include/bits/mman.h:38: note: this is the location of the previous definition # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ It looks odd to me. Let me dig into it more. Thanks, Jason
On Sun, Oct 20, 2024 at 12:10 PM Jason Xing <kerneljasonxing@gmail.com> wrote: > > On Sun, Oct 20, 2024 at 11:14 AM Jason Xing <kerneljasonxing@gmail.com> wrote: > > > > From: Jason Xing <kernelxing@tencent.com> > > > > When I compiled the tools/testing/selftests/bpf, the following error > > pops out: > > uprobe_multi.c: In function ‘trigger_uprobe’: > > uprobe_multi.c:109:26: error: ‘MADV_PAGEOUT’ undeclared (first use in this function); did you mean ‘MADV_RANDOM’? > > madvise(addr, page_sz, MADV_PAGEOUT); > > ^~~~~~~~~~~~ > > MADV_RANDOM > > > > We can see MADV_PAGEOUT existing in mman-common.h on x86 arch, so > > including this header file solves this compilation error. > > > > Signed-off-by: Jason Xing <kernelxing@tencent.com> > > --- > > tools/testing/selftests/bpf/uprobe_multi.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c > > index c7828b13e5ff..b0e11ffe0e1c 100644 > > --- a/tools/testing/selftests/bpf/uprobe_multi.c > > +++ b/tools/testing/selftests/bpf/uprobe_multi.c > > @@ -5,6 +5,7 @@ > > #include <stdbool.h> > > #include <stdint.h> > > #include <sys/mman.h> > > +#include <mman-common.h> > > uprobe_multi.c:8:10: fatal error: mman-common.h: No such file or directory > 61 8 | #include <mman-common.h> > 62 | ^~~~~~~~~~~~~~~ > > After seeing the error that CI reported to me, I realized that I did > cp /usr/include/asm-generic/mman-common.h to > /usr/include/mman-common.h. > > If I try "#include <asm-generic/mman-common.h>", then I will see > redefinition error: > tools/include/uapi/asm-generic/mman-common.h:26: error: "MAP_POPULATE" > redefined [-Werror] > #define MAP_POPULATE 0x008000 /* populate (prefault) pagetables */ > > In file included from /usr/include/sys/mman.h:41, > from uprobe_multi.c:7: > /usr/include/bits/mman.h:38: note: this is the location of the > previous definition > # define MAP_POPULATE 0x08000 /* Populate (prefault) pagetables. */ > > It looks odd to me. Let me dig into it more. Ah, I know how to fix it: diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c index c7828b13e5ff..40231f02b95d 100644 --- a/tools/testing/selftests/bpf/uprobe_multi.c +++ b/tools/testing/selftests/bpf/uprobe_multi.c @@ -4,6 +4,7 @@ #include <string.h> #include <stdbool.h> #include <stdint.h> +#include <linux/mman.h> #include <sys/mman.h> #include <unistd.h> #include <sdt.h> It works. I'll post it in 24 hours.
diff --git a/tools/testing/selftests/bpf/uprobe_multi.c b/tools/testing/selftests/bpf/uprobe_multi.c index c7828b13e5ff..b0e11ffe0e1c 100644 --- a/tools/testing/selftests/bpf/uprobe_multi.c +++ b/tools/testing/selftests/bpf/uprobe_multi.c @@ -5,6 +5,7 @@ #include <stdbool.h> #include <stdint.h> #include <sys/mman.h> +#include <mman-common.h> #include <unistd.h> #include <sdt.h>