From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jakub Kicinski Subject: Re: libbpf backward compatibility (was: [PATCH bpf-next v5 09/10] bpf: btf: Add BTF support to libbpf) Date: Wed, 9 May 2018 15:20:57 -0700 Message-ID: <20180509152057.2aeae80f@cakuba.netronome.com> References: <20180418225606.2771620-1-kafai@fb.com> <20180418225606.2771620-10-kafai@fb.com> <20180509151712.7d6826f7@cakuba.netronome.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Cc: , , David Beckett To: Martin KaFai Lau , Alexei Starovoitov , Daniel Borkmann , Andrey Ignatov Return-path: Received: from mail-qt0-f193.google.com ([209.85.216.193]:45504 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964941AbeEIWVB (ORCPT ); Wed, 9 May 2018 18:21:01 -0400 Received: by mail-qt0-f193.google.com with SMTP id j42-v6so128706qtj.12 for ; Wed, 09 May 2018 15:21:01 -0700 (PDT) In-Reply-To: <20180509151712.7d6826f7@cakuba.netronome.com> Sender: netdev-owner@vger.kernel.org List-ID: On Wed, 9 May 2018 15:17:12 -0700, Jakub Kicinski wrote: > On Wed, 18 Apr 2018 15:56:05 -0700, Martin KaFai Lau wrote: > > diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h > > index 39f6a0d64a3b..01bda076310f 100644 > > --- a/tools/lib/bpf/bpf.h > > +++ b/tools/lib/bpf/bpf.h > > @@ -26,6 +26,20 @@ > > #include > > #include > > > > +struct bpf_create_map_attr { > > + const char *name; > > + enum bpf_map_type map_type; > > + __u32 map_flags; > > + __u32 key_size; > > + __u32 value_size; > > + __u32 max_entries; > > + __u32 numa_node; > > + __u32 btf_fd; > > + __u32 btf_key_id; > > + __u32 btf_value_id; > > +}; > > + > > +int bpf_create_map_xattr(const struct bpf_create_map_attr *create_attr); > > int bpf_create_map_node(enum bpf_map_type map_type, const char *name, > > int key_size, int value_size, int max_entries, > > __u32 map_flags, int node); > > @@ -87,4 +101,6 @@ int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len); > > int bpf_prog_query(int target_fd, enum bpf_attach_type type, __u32 query_flags, > > __u32 *attach_flags, __u32 *prog_ids, __u32 *prog_cnt); > > int bpf_raw_tracepoint_open(const char *name, int prog_fd); > > +int bpf_load_btf(void *btf, __u32 btf_size, char *log_buf, __u32 log_buf_size, > > + bool do_log); > > #endif > > Does libbpf have to provide backward compatibility? Are the function > prototypes not supposed to change? > > Recently a number of *_xattr functions were added, these are nice for > limiting the number of parameters passed to functions, but they don't > buy us anything in terms of extensibility unless we can grow the > structures. Should structure size be passed in as one of parameters? Or is the backward compatibility not at the binary level so we can grow the structures at will?