/* fmod_ret not allowed for subprog - Check so we remember to handle its * throwing specification compatibility with target when supported.
*/ if (test__start_subtest("non-throwing fmod_ret -> non-throwing subprog"))
RUN_EXT(-EINVAL, true, ({
prog = eskel->progs.pfmod_ret;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "subprog"), "set_attach_target")) goto done;
}), "can't modify return codes of BPF program", 0);
/* fmod_ret not allowed for subprog - Check so we remember to handle its * throwing specification compatibility with target when supported.
*/ if (test__start_subtest("non-throwing fmod_ret -> non-throwing global subprog"))
RUN_EXT(-EINVAL, true, ({
prog = eskel->progs.pfmod_ret;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "global_subprog"), "set_attach_target")) goto done;
}), "can't modify return codes of BPF program", 0);
if (test__start_subtest("non-throwing extension -> non-throwing subprog")) /* non-throwing extension -> non-throwing subprog : BAD (!global) */
RUN_EXT(-EINVAL, true, ({
prog = eskel->progs.extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "subprog"), "set_attach_target")) goto done;
}), "subprog() is not a global function", 0);
if (test__start_subtest("non-throwing extension -> throwing subprog")) /* non-throwing extension -> throwing subprog : BAD (!global) */
RUN_EXT(-EINVAL, true, ({
prog = eskel->progs.extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "throwing_subprog"), "set_attach_target")) goto done;
}), "throwing_subprog() is not a global function", 0);
if (test__start_subtest("non-throwing extension -> non-throwing subprog")) /* non-throwing extension -> non-throwing global subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "global_subprog"), "set_attach_target")) goto done;
}), "", 0);
if (test__start_subtest("non-throwing extension -> throwing global subprog")) /* non-throwing extension -> throwing global subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "throwing_global_subprog"), "set_attach_target")) goto done;
}), "", 0);
if (test__start_subtest("throwing extension -> throwing global subprog")) /* throwing extension -> throwing global subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.throwing_extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "throwing_global_subprog"), "set_attach_target")) goto done;
}), "", 0);
if (test__start_subtest("throwing extension -> non-throwing global subprog")) /* throwing extension -> non-throwing global subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.throwing_extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "global_subprog"), "set_attach_target")) goto done;
}), "", 0);
if (test__start_subtest("non-throwing extension -> main subprog")) /* non-throwing extension -> main subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "exception_throw_subprog"), "set_attach_target")) goto done;
}), "", 0);
if (test__start_subtest("throwing extension -> main subprog")) /* throwing extension -> main subprog : OK */
RUN_EXT(0, false, ({
prog = eskel->progs.throwing_extension;
bpf_program__set_autoload(prog, true); if (!ASSERT_OK(bpf_program__set_attach_target(prog,
bpf_program__fd(skel->progs.exception_throw_subprog), "exception_throw_subprog"), "set_attach_target")) goto done;
}), "", 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.