• Home
  • Raw
  • Download

Lines Matching refs:spec

4383 	struct bpf_core_accessor spec[BPF_CORE_SPEC_MAX_LEN];  member
4517 struct bpf_core_spec *spec) in bpf_core_parse_spec() argument
4529 memset(spec, 0, sizeof(*spec)); in bpf_core_parse_spec()
4530 spec->btf = btf; in bpf_core_parse_spec()
4531 spec->root_type_id = type_id; in bpf_core_parse_spec()
4532 spec->relo_kind = relo_kind; in bpf_core_parse_spec()
4547 if (spec->raw_len == BPF_CORE_SPEC_MAX_LEN) in bpf_core_parse_spec()
4550 spec->raw_spec[spec->raw_len++] = access_idx; in bpf_core_parse_spec()
4553 if (spec->raw_len == 0) in bpf_core_parse_spec()
4560 access_idx = spec->raw_spec[0]; in bpf_core_parse_spec()
4561 acc = &spec->spec[0]; in bpf_core_parse_spec()
4564 spec->len++; in bpf_core_parse_spec()
4567 if (!btf_is_enum(t) || spec->raw_len > 1 || access_idx >= btf_vlen(t)) in bpf_core_parse_spec()
4581 spec->bit_offset = access_idx * sz * 8; in bpf_core_parse_spec()
4583 for (i = 1; i < spec->raw_len; i++) { in bpf_core_parse_spec()
4588 access_idx = spec->raw_spec[i]; in bpf_core_parse_spec()
4589 acc = &spec->spec[spec->len]; in bpf_core_parse_spec()
4599 spec->bit_offset += bit_offset; in bpf_core_parse_spec()
4610 spec->len++; in bpf_core_parse_spec()
4626 spec->spec[spec->len].type_id = id; in bpf_core_parse_spec()
4627 spec->spec[spec->len].idx = access_idx; in bpf_core_parse_spec()
4628 spec->len++; in bpf_core_parse_spec()
4633 spec->bit_offset += access_idx * sz * 8; in bpf_core_parse_spec()
4828 struct bpf_core_spec *spec, in bpf_core_match_member() argument
4856 if (spec->raw_len == BPF_CORE_SPEC_MAX_LEN) in bpf_core_match_member()
4860 spec->bit_offset += bit_offset; in bpf_core_match_member()
4861 spec->raw_spec[spec->raw_len++] = i; in bpf_core_match_member()
4868 spec, next_targ_id); in bpf_core_match_member()
4875 targ_acc = &spec->spec[spec->len++]; in bpf_core_match_member()
4885 spec->len--; /* pop accessor */ in bpf_core_match_member()
4889 spec->bit_offset -= bit_offset; in bpf_core_match_member()
4890 spec->raw_len--; in bpf_core_match_member()
5014 local_acc = &local_spec->spec[0]; in bpf_core_spec_match()
5015 targ_acc = &targ_spec->spec[0]; in bpf_core_spec_match()
5107 const struct bpf_core_spec *spec, in bpf_core_calc_field_relo() argument
5122 *val = spec ? 1 : 0; in bpf_core_calc_field_relo()
5126 if (!spec) in bpf_core_calc_field_relo()
5129 acc = &spec->spec[spec->len - 1]; in bpf_core_calc_field_relo()
5130 t = btf__type_by_id(spec->btf, acc->type_id); in bpf_core_calc_field_relo()
5135 *val = spec->bit_offset / 8; in bpf_core_calc_field_relo()
5137 sz = btf__resolve_size(spec->btf, acc->type_id); in bpf_core_calc_field_relo()
5143 sz = btf__resolve_size(spec->btf, acc->type_id); in bpf_core_calc_field_relo()
5158 mt = skip_mods_and_typedefs(spec->btf, m->type, &field_type_id); in bpf_core_calc_field_relo()
5159 bit_off = spec->bit_offset; in bpf_core_calc_field_relo()
5178 sz = btf__resolve_size(spec->btf, field_type_id); in bpf_core_calc_field_relo()
5182 byte_off = spec->bit_offset / 8; in bpf_core_calc_field_relo()
5232 const struct bpf_core_spec *spec, in bpf_core_calc_type_relo() argument
5238 if (!spec) { in bpf_core_calc_type_relo()
5245 *val = spec->root_type_id; in bpf_core_calc_type_relo()
5251 sz = btf__resolve_size(spec->btf, spec->root_type_id); in bpf_core_calc_type_relo()
5266 const struct bpf_core_spec *spec, in bpf_core_calc_enumval_relo() argument
5274 *val = spec ? 1 : 0; in bpf_core_calc_enumval_relo()
5277 if (!spec) in bpf_core_calc_enumval_relo()
5279 t = btf__type_by_id(spec->btf, spec->spec[0].type_id); in bpf_core_calc_enumval_relo()
5280 e = btf_enum(t) + spec->spec[0].idx; in bpf_core_calc_enumval_relo()
5613 static void bpf_core_dump_spec(int level, const struct bpf_core_spec *spec) in bpf_core_dump_spec() argument
5621 type_id = spec->root_type_id; in bpf_core_dump_spec()
5622 t = btf__type_by_id(spec->btf, type_id); in bpf_core_dump_spec()
5623 s = btf__name_by_offset(spec->btf, t->name_off); in bpf_core_dump_spec()
5627 if (core_relo_is_type_based(spec->relo_kind)) in bpf_core_dump_spec()
5630 if (core_relo_is_enumval_based(spec->relo_kind)) { in bpf_core_dump_spec()
5631 t = skip_mods_and_typedefs(spec->btf, type_id, NULL); in bpf_core_dump_spec()
5632 e = btf_enum(t) + spec->raw_spec[0]; in bpf_core_dump_spec()
5633 s = btf__name_by_offset(spec->btf, e->name_off); in bpf_core_dump_spec()
5639 if (core_relo_is_field_based(spec->relo_kind)) { in bpf_core_dump_spec()
5640 for (i = 0; i < spec->len; i++) { in bpf_core_dump_spec()
5641 if (spec->spec[i].name) in bpf_core_dump_spec()
5642 libbpf_print(level, ".%s", spec->spec[i].name); in bpf_core_dump_spec()
5643 else if (i > 0 || spec->spec[i].idx > 0) in bpf_core_dump_spec()
5644 libbpf_print(level, "[%u]", spec->spec[i].idx); in bpf_core_dump_spec()
5648 for (i = 0; i < spec->raw_len; i++) in bpf_core_dump_spec()
5649 libbpf_print(level, "%s%d", i == 0 ? "" : ":", spec->raw_spec[i]); in bpf_core_dump_spec()
5651 if (spec->bit_offset % 8) in bpf_core_dump_spec()
5653 spec->bit_offset / 8, spec->bit_offset % 8); in bpf_core_dump_spec()
5655 libbpf_print(level, " @ offset %u)", spec->bit_offset / 8); in bpf_core_dump_spec()