staticvoid sigsegv_handler(int sig __maybe_unused)
{
pr_debug("SIGSEGV is observed as expected, try to recover.\n");
perf_hooks__recover();
signal(SIGSEGV, SIG_DFL);
raise(SIGSEGV); exit(-1);
}
staticvoid the_hook(void *_hook_flags)
{ int *hook_flags = _hook_flags;
*hook_flags = 1234;
/* Generate a segfault, test perf_hooks__recover */
raise(SIGSEGV);
}
staticint test__perf_hooks(struct test_suite *test __maybe_unused, int subtest __maybe_unused)
{ int hook_flags = 0;
/* hook is triggered? */ if (hook_flags != 1234) {
pr_debug("Setting failed: %d (%p)\n", hook_flags, &hook_flags); return TEST_FAIL;
}
/* the buggy hook is removed? */ if (perf_hooks__get_hook("test")) return TEST_FAIL; return TEST_OK;
}
DEFINE_SUITE("perf hooks", perf_hooks);
Messung V0.5
¤ 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.0.11Bemerkung:
(vorverarbeitet)
¤
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.