On Mon, Sep 13, 2021 at 8:51 AM Yonghong Song <yhs@xxxxxx> wrote: > > Change BTF_KIND_* macros to enums so they are encoded in dwarf and > appear in vmlinux.h. This will make it easier for bpf programs > to use these constants without macro definitions. > > Signed-off-by: Yonghong Song <yhs@xxxxxx> > --- > include/uapi/linux/btf.h | 36 ++++++++++++++++++---------------- > tools/include/uapi/linux/btf.h | 36 ++++++++++++++++++---------------- > 2 files changed, 38 insertions(+), 34 deletions(-) > > diff --git a/include/uapi/linux/btf.h b/include/uapi/linux/btf.h > index d27b1708efe9..c32cd6697d63 100644 > --- a/include/uapi/linux/btf.h > +++ b/include/uapi/linux/btf.h > @@ -56,23 +56,25 @@ struct btf_type { > #define BTF_INFO_VLEN(info) ((info) & 0xffff) > #define BTF_INFO_KFLAG(info) ((info) >> 31) > > -#define BTF_KIND_UNKN 0 /* Unknown */ > -#define BTF_KIND_INT 1 /* Integer */ > -#define BTF_KIND_PTR 2 /* Pointer */ > -#define BTF_KIND_ARRAY 3 /* Array */ > -#define BTF_KIND_STRUCT 4 /* Struct */ > -#define BTF_KIND_UNION 5 /* Union */ > -#define BTF_KIND_ENUM 6 /* Enumeration */ > -#define BTF_KIND_FWD 7 /* Forward */ > -#define BTF_KIND_TYPEDEF 8 /* Typedef */ > -#define BTF_KIND_VOLATILE 9 /* Volatile */ > -#define BTF_KIND_CONST 10 /* Const */ > -#define BTF_KIND_RESTRICT 11 /* Restrict */ > -#define BTF_KIND_FUNC 12 /* Function */ > -#define BTF_KIND_FUNC_PROTO 13 /* Function Proto */ > -#define BTF_KIND_VAR 14 /* Variable */ > -#define BTF_KIND_DATASEC 15 /* Section */ > -#define BTF_KIND_FLOAT 16 /* Floating point */ > +enum { > + BTF_KIND_UNKN = 0, /* Unknown */ > + BTF_KIND_INT, /* Integer */ > + BTF_KIND_PTR, /* Pointer */ > + BTF_KIND_ARRAY, /* Array */ > + BTF_KIND_STRUCT, /* Struct */ > + BTF_KIND_UNION, /* Union */ > + BTF_KIND_ENUM, /* Enumeration */ > + BTF_KIND_FWD, /* Forward */ > + BTF_KIND_TYPEDEF, /* Typedef */ > + BTF_KIND_VOLATILE, /* Volatile */ > + BTF_KIND_CONST, /* Const */ > + BTF_KIND_RESTRICT, /* Restrict */ > + BTF_KIND_FUNC, /* Function */ > + BTF_KIND_FUNC_PROTO, /* Function Proto */ > + BTF_KIND_VAR, /* Variable */ > + BTF_KIND_DATASEC, /* Section */ > + BTF_KIND_FLOAT, /* Floating point */ Can you please leave explicit integer values specified? It's extremely helpful and much easier in practice, compared to having to count the number of rows from BTF_KIND_UNKN. Had to do it multiple times with other BPF constants and was happy I didn't have to do that for BTF_KIND enums. > +}; > #define BTF_KIND_MAX BTF_KIND_FLOAT > #define NR_BTF_KINDS (BTF_KIND_MAX + 1) these two can be just an enum values as well, and actually will be "auto-updated", if done this way (I think, haven't really tested) BTF_KIND_FLOAT = 16, NR_BTF_KINDS, BTF_KIND_MAX = NR_BTF_KINDS - 1, ... won't it? [...]