staticinlinechar to_lower(char c)
{ if (c >= 'A' && c <= 'Z')
c += ('a' - 'A'); return c;
}
staticinlinechar to_upper(char c)
{ if (c >= 'a' && c <= 'z')
c -= ('a' - 'A'); return c;
}
/* Dump symbols with max size; the latter is calculated by caching symbol N value * and when iterating on symbol N+1, we can print max size of symbol N via * address of N+1 - address of N.
*/
SEC("iter/ksym") int dump_ksym(struct bpf_iter__ksym *ctx)
{ struct seq_file *seq = ctx->meta->seq; struct kallsym_iter *iter = ctx->ksym;
__u32 seq_num = ctx->meta->seq_num; unsignedlong value; char type;
if (!iter) return 0;
if (seq_num == 0) {
BPF_SEQ_PRINTF(seq, "ADDR TYPE NAME MODULE_NAME KIND MAX_SIZE\n"); return 0;
} if (last_sym_value)
BPF_SEQ_PRINTF(seq, "0x%x\n", iter->value - last_sym_value); else
BPF_SEQ_PRINTF(seq, "\n");
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.