函数源码 |
Source File:kernel\bpf\btf.c |
Create Date:2022-07-27 14:36:48 |
首页 | Copyright©Brick |
2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 | static void btf_struct_seq_show( const struct btf *btf, const struct btf_type *t, u32 type_id, void *data, u8 bits_offset, struct seq_file *m) { const char *seq = BTF_INFO_KIND(t->info) == BTF_KIND_UNION ? "|" : "," ; const struct btf_member *member; u32 i; seq_puts(m, "{" ); for_each_member(i, t, member) { const struct btf_type *member_type = btf_type_by_id(btf, member->type); const struct btf_kind_operations *ops; u32 member_offset, bitfield_size; u32 bytes_offset; u8 bits8_offset; if (i) seq_puts(m, seq); member_offset = btf_member_bit_offset(t, member); bitfield_size = btf_member_bitfield_size(t, member); bytes_offset = BITS_ROUNDDOWN_BYTES(member_offset); bits8_offset = BITS_PER_BYTE_MASKED(member_offset); if (bitfield_size) { btf_bitfield_seq_show(data + bytes_offset, bits8_offset, bitfield_size, m); } else { ops = btf_type_ops(member_type); ops->seq_show(btf, member_type, member->type, data + bytes_offset, bits8_offset, m); } } seq_puts(m, "}" ); } |