Rollup merge of #94618 - lewisclark:remove-stack-size-rounding, r=yaahc

Don't round stack size up for created threads in Windows

Fixes #94454

Windows does the rounding itself, so there isn't a need to explicity do the rounding beforehand, as mentioned by ```@ChrisDenton``` in #94454

> The operating system rounds up the specified size to the nearest multiple of the system's allocation granularity (typically 64 KB). To retrieve the allocation granularity of the current system, use the [GetSystemInfo](https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo) function.

https://docs.microsoft.com/en-us/windows/win32/procthread/thread-stack-size
This commit is contained in:
Dylan DPC 2022-03-04 22:58:37 +01:00 committed by GitHub
commit 629e7aa718
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,12 +30,9 @@ pub unsafe fn new(stack: usize, p: Box<dyn FnOnce()>) -> io::Result<Thread> {
// PTHREAD_STACK_MIN bytes big. Windows has no such lower limit, it's // PTHREAD_STACK_MIN bytes big. Windows has no such lower limit, it's
// just that below a certain threshold you can't do anything useful. // just that below a certain threshold you can't do anything useful.
// That threshold is application and architecture-specific, however. // That threshold is application and architecture-specific, however.
// Round up to the next 64 kB because that's what the NT kernel does,
// might as well make it explicit.
let stack_size = (stack + 0xfffe) & (!0xfffe);
let ret = c::CreateThread( let ret = c::CreateThread(
ptr::null_mut(), ptr::null_mut(),
stack_size, stack,
thread_start, thread_start,
p as *mut _, p as *mut _,
c::STACK_SIZE_PARAM_IS_A_RESERVATION, c::STACK_SIZE_PARAM_IS_A_RESERVATION,