void Thread::SetUpAlternateSignalStack() { // Bionic does this for us.
}
void Thread::TearDownAlternateSignalStack() { // Bionic does this for us.
}
void Thread::MadviseAwayAlternateSignalStack() {
stack_t old_ss; int result = sigaltstack(nullptr, &old_ss);
CHECK_EQ(result, 0); // Only call `madvise()` on enabled page-aligned alternate signal stack. Processes can // create different arbitrary alternate signal stacks and we do not want to erroneously // `madvise()` away pages that may hold data other than the alternate signal stack. if ((old_ss.ss_flags & SS_DISABLE) == 0 &&
IsAlignedParam(old_ss.ss_sp, gPageSize) &&
IsAlignedParam(old_ss.ss_size, gPageSize)) {
CHECK_EQ(old_ss.ss_flags & SS_ONSTACK, 0); // Note: We're testing and benchmarking ART on devices with old kernels // which may not support `MADV_FREE`, so we do not check the result. // It should succeed on devices with Android 12+.
madvise(old_ss.ss_sp, old_ss.ss_size, MADV_FREE);
}
}
} // namespace art
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-29)
¤
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.