anon_stack = kcalloc(BTF_ANON_STACK_MAX, sizeof(*anon_stack), GFP_KERNEL); if (!anon_stack) return ERR_PTR(-ENOMEM);
retry: if (!btf_type_is_struct(type)) {
member = ERR_PTR(-EINVAL); goto out;
}
for_each_member(i, type, member) { if (!member->name_off) { /* Anonymous union/struct: push it for later use */ if (btf_type_skip_modifiers(btf, member->type, &tid) &&
top < BTF_ANON_STACK_MAX) {
anon_stack[top].tid = tid;
anon_stack[top++].offset =
cur_offset + member->offset;
}
} else {
name = btf_name_by_offset(btf, member->name_off); if (name && !strcmp(member_name, name)) { if (anon_offset)
*anon_offset = cur_offset; goto out;
}
}
} if (top > 0) { /* Pop from the anonymous stack and retry */
tid = anon_stack[--top].tid;
cur_offset = anon_stack[top].offset;
type = btf_type_by_id(btf, tid); goto retry;
}
member = NULL;
out:
kfree(anon_stack); return member;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.