tools/bpf: implement libbpf btf__get_map_kv_tids() API function
authorYonghong Song <yhs@fb.com>
Mon, 4 Feb 2019 19:00:58 +0000 (11:00 -0800)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 4 Feb 2019 20:48:36 +0000 (12:48 -0800)
commit96408c43447aff5091a6938f29d8b6f2d0aa2064
treee59397b34c18fbca196e149502381e4efa1ad31c
parentb8dcf8d149db5999d3db937822d3e374eca68b9f
tools/bpf: implement libbpf btf__get_map_kv_tids() API function

Currently, to get map key/value type id's, the macro
  BPF_ANNOTATE_KV_PAIR(<map_name>, <key_type>, <value_type>)
needs to be defined in the bpf program for the
corresponding map.

During program/map loading time,
the local static function bpf_map_find_btf_info()
in libbpf.c is implemented to retrieve the key/value
type ids given the map name.

The patch refactored function bpf_map_find_btf_info()
to create an API btf__get_map_kv_tids() which includes
the bulk of implementation for the original function.
The API btf__get_map_kv_tids() can be used by bcc,
a JIT based bpf compilation system, which uses the
same BPF_ANNOTATE_KV_PAIR to record map key/value types.

Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/lib/bpf/btf.c
tools/lib/bpf/btf.h
tools/lib/bpf/libbpf.c
tools/lib/bpf/libbpf.map