Re: How to avoid compilation errors like "error: no member named xxx in strut xxx"?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 6/16/21 2:02 PM, Andrii Nakryiko wrote:
On Tue, Jun 15, 2021 at 9:06 PM Shuyi Cheng
<chengshuyi@xxxxxxxxxxxxxxxxx> wrote:

I am trying to write a bpf program that supports multiple linux kernel
versions. However, there are some differences in the definition of
struct net in these multiple kernel versions.

Therefore, when we include a certain kernel version of vmlinux.h, the
compilation error "error: no member named'proc_inum' in strut net" will
appear.

However, when we include another kernel version of vmlinux.h, the
compilation will appear "error: no member named'ns.inum' in strut net".

Anakryiko mentioned in the issue of libbpf/libbpf-bootstrap: vmlinux.h
is just a convenient way to have most of kernel types defined for you,
so that you don't have to re-define them manually. Link here: https:
//github.com/libbpf/libbpf-bootstrap/issues/31#issuecomment-861035643

But struct net is a very huge structure, and it may be very difficult to

You don't need to declare the entire struct, it's enough to declare
only fields that you need and use.

If the type has incompatible changes between kernel versions (e.g., if
some field changed it's type), you can use my_type___suffix approach,
see [0] and struct kernfs_iattrs___old example. Let me know if you
need more concrete example (but then also provide more concrete
explanation of what you actually need).

   [0] https://nakryiko.com/posts/bcc-to-libbpf-howto-guide/#dealing-with-compile-time-if-s-in-bcc

add it manually. So, how can we avoid compilation errors like "error: no
member named'xxx' in xxx"


Thank you very much, i get it.



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux