On Fri, Dec 14, 2018 at 03:34:33PM -0800, Yonghong Song wrote: > The core dump funcitonality in btf_dumper_int_bits() is > refactored into a separate function btf_dumper_bitfield() > which will be used by the next patch. > > Signed-off-by: Yonghong Song <y...@fb.com> > --- > tools/bpf/bpftool/btf_dumper.c | 22 ++++++++++++++++------ > 1 file changed, 16 insertions(+), 6 deletions(-) > > diff --git a/tools/bpf/bpftool/btf_dumper.c b/tools/bpf/bpftool/btf_dumper.c > index 5cdb2ef8b6f1..ec1da87c3d65 100644 > --- a/tools/bpf/bpftool/btf_dumper.c > +++ b/tools/bpf/bpftool/btf_dumper.c > @@ -73,20 +73,17 @@ static int btf_dumper_array(const struct btf_dumper *d, > __u32 type_id, > return ret; > } > > -static void btf_dumper_int_bits(__u32 int_type, __u8 bit_offset, > +static void btf_dumper_bitfield(__u32 nr_bits, __u8 bit_offset, > const void *data, json_writer_t *jw, > bool is_plain_text) > { > int left_shift_bits, right_shift_bits; > - int nr_bits = BTF_INT_BITS(int_type); > - int total_bits_offset; > int bytes_to_copy; > int bits_to_copy; > __u64 print_num; > > - total_bits_offset = bit_offset + BTF_INT_OFFSET(int_type); > - data += BITS_ROUNDDOWN_BYTES(total_bits_offset); > - bit_offset = BITS_PER_BYTE_MASKED(total_bits_offset); > + data += BITS_ROUNDDOWN_BYTES(bit_offset); > + bit_offset = BITS_PER_BYTE_MASKED(bit_offset); > bits_to_copy = bit_offset + nr_bits; > bytes_to_copy = BITS_ROUNDUP_BYTES(bits_to_copy); > > @@ -109,6 +106,19 @@ static void btf_dumper_int_bits(__u32 int_type, __u8 > bit_offset, > jsonw_printf(jw, "%llu", print_num); > } > > + > +static void btf_dumper_int_bits(__u32 int_type, __u8 bit_offset, > + const void *data, json_writer_t *jw, > + bool is_plain_text) > +{ > + int nr_bits = BTF_INT_BITS(int_type); > + int total_bits_offset; > + > + total_bits_offset = bit_offset + BTF_INT_OFFSET(int_type); > + btf_dumper_bitfield(nr_bits, total_bits_offset, data, jw, The 2nd arg is "__u8 bit_offset". Can you check if total_bits_offset is fine here, considering BTF_INT_OFFSET() is 8 bits itself. A comment would help if it is safe.
Other than that, Acked-by: Martin KaFai Lau <ka...@fb.com> > + is_plain_text); > +} > + > static int btf_dumper_int(const struct btf_type *t, __u8 bit_offset, > const void *data, json_writer_t *jw, > bool is_plain_text) > -- > 2.17.1 >