管理员 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));
}