conststruct { unsigned a[4]; /* * if the struct's size is multiple of 16, compiler will put it into * .rodata.cst16 section, which is not recognized by libbpf; work * around this by ensuring we don't have 16-aligned struct
*/ char _y;
} rdonly_values = { .a = {2, 3, 4, 5} };
SEC("raw_tracepoint/sys_enter:full_loop") int full_loop(struct pt_regs *ctx)
{ /* prevent compiler to optimize everything out */ unsigned * volatile p = (void *)&rdonly_values.a; int i = ARRAY_SIZE(rdonly_values.a); unsigned iters = 0, sum = 0;
/* validate verifier can allow full loop as well */ while (i > 0 ) {
iters++;
sum += *p;
p++;
i--;
}
res.did_run = 1;
res.iters = iters;
res.sum = sum; return 0;
}
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.