adjustments for platforms with 64k page size

master
Daniel Kolesa 2019-01-28 01:58:13 +01:00
parent 5728c30da1
commit db38b9d368
1 changed files with 6 additions and 4 deletions

View File

@ -102,8 +102,10 @@ OSTD_EXPORT std::size_t stack_traits::page_size() noexcept {
}
OSTD_EXPORT std::size_t stack_traits::minimum_size() noexcept {
/* typically 8 KiB but can be much larger on some platforms */
return SIGSTKSZ;
/* always at least 2 pages, typically 8k on x86_64, but for
* example on ppc64 this will be 128k because 64k page size
*/
return std::max(std::size_t(SIGSTKSZ), 2 * page_size());
}
OSTD_EXPORT std::size_t stack_traits::maximum_size() noexcept {
@ -112,8 +114,8 @@ OSTD_EXPORT std::size_t stack_traits::maximum_size() noexcept {
}
OSTD_EXPORT std::size_t stack_traits::default_size() noexcept {
/* default to at least 64 KiB (see minimum_size comment) */
constexpr std::size_t r = std::max(8 * 8 * 1024, SIGSTKSZ);
/* at least 64k unless minimum is bigger (typically 64k page platforms) */
std::size_t r = std::max(std::size_t(8 * 8 * 1024), minimum_size());
if (is_unbounded()) {
return r;
}