| 管理员 on Wed, 28 Jan 2026 09:00:11 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| pari_stackcheck_init using Win32 API |
void pari_stackcheck_init(void *pari_stack_base) {
SYSTEM_INFO si;
MEMORY_BASIC_INFORMATION mbi;
ulong stack_size;
if (!pari_stack_base) { PARI_stack_limit = NULL; return; }
GetSystemInfo(&si);
if (VirtualQuery(pari_stack_base, &mbi, sizeof(mbi)) != sizeof(mbi))
stack_size = 1UL << 21;
else
stack_size = (ulong)pari_stack_base - (ulong)mbi.AllocationBase;
PARI_stack_limit = (char*)mbi.AllocationBase + maxuu(stack_size >> 4, (ulong)(4 * si.dwPageSize));
}