/* unpin link from BPFFS, program still attached */
err = bpf_link__unpin(link); if (CHECK(err, "link_unpin", "err: %d\n", err)) goto cleanup;
/* still active, as we have FD open now */
bss->in = 4;
usleep(1);
CHECK(bss->out != 4, "res_check4", "exp %d, got %d\n", 4, bss->out);
bpf_link__destroy(link);
link = NULL;
/* Validate it's finally detached. * Actual detachment might get delayed a bit, so there is no reliable * way to validate it immediately here, let's count up for long enough * and see if eventually output stops being updated
*/ for (i = 5; i < 10000; i++) {
bss->in = i;
usleep(1); if (bss->out == i - 1) break;
}
CHECK(i == 10000, "link_attached", "got to iteration #%d\n", i);
skel = test_link_pinning__open_and_load(); if (CHECK(!skel, "skel_open", "failed to open skeleton\n")) return;
if (test__start_subtest("pin_raw_tp"))
test_link_pinning_subtest(skel->progs.raw_tp_prog, skel->bss); if (test__start_subtest("pin_tp_btf"))
test_link_pinning_subtest(skel->progs.tp_btf_prog, skel->bss);
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.