mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +00:00
[NTOS:MM] Implement MmCreateKernelStackEx
This allows to specify the amount of committed bytes.
This commit is contained in:
parent
cb31f810c5
commit
6fe60acc1d
2 changed files with 41 additions and 5 deletions
|
@ -866,7 +866,16 @@ MmAccessFault(
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
MmCreateKernelStack(BOOLEAN GuiStack, UCHAR Node);
|
MmCreateKernelStack(
|
||||||
|
_In_ BOOLEAN GuiStack,
|
||||||
|
_In_ UCHAR Node);
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmCreateKernelStackEx(
|
||||||
|
_In_ BOOLEAN GuiStack,
|
||||||
|
_In_ SIZE_T CommitSize,
|
||||||
|
_In_ UCHAR Node);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|
|
@ -273,8 +273,10 @@ MmDeleteKernelStack(IN PVOID StackBase,
|
||||||
|
|
||||||
PVOID
|
PVOID
|
||||||
NTAPI
|
NTAPI
|
||||||
MmCreateKernelStack(IN BOOLEAN GuiStack,
|
MmCreateKernelStackEx(
|
||||||
IN UCHAR Node)
|
_In_ BOOLEAN GuiStack,
|
||||||
|
_In_ SIZE_T CommitSize,
|
||||||
|
_In_ UCHAR Node)
|
||||||
{
|
{
|
||||||
PFN_COUNT StackPtes, StackPages;
|
PFN_COUNT StackPtes, StackPages;
|
||||||
PMMPTE PointerPte, StackPte;
|
PMMPTE PointerPte, StackPte;
|
||||||
|
@ -291,10 +293,23 @@ MmCreateKernelStack(IN BOOLEAN GuiStack,
|
||||||
if (GuiStack)
|
if (GuiStack)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// We'll allocate 64KB stack, but only commit 12K
|
// We always reserve MmLargeStackSize
|
||||||
//
|
//
|
||||||
StackPtes = BYTES_TO_PAGES(MmLargeStackSize);
|
StackPtes = BYTES_TO_PAGES(MmLargeStackSize);
|
||||||
StackPages = BYTES_TO_PAGES(KERNEL_LARGE_STACK_COMMIT);
|
|
||||||
|
//
|
||||||
|
// If requested, use the whole thing, otherwise just the minimum
|
||||||
|
//
|
||||||
|
if (CommitSize != 0)
|
||||||
|
{
|
||||||
|
ASSERT(CommitSize >= KERNEL_LARGE_STACK_COMMIT);
|
||||||
|
ASSERT(CommitSize <= MmLargeStackSize);
|
||||||
|
StackPages = BYTES_TO_PAGES(CommitSize);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StackPages = BYTES_TO_PAGES(KERNEL_LARGE_STACK_COMMIT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -384,6 +399,18 @@ MmCreateKernelStack(IN BOOLEAN GuiStack,
|
||||||
return BaseAddress;
|
return BaseAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PVOID
|
||||||
|
NTAPI
|
||||||
|
MmCreateKernelStack(
|
||||||
|
_In_ BOOLEAN GuiStack,
|
||||||
|
_In_ UCHAR Node)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Call the extended version
|
||||||
|
//
|
||||||
|
return MmCreateKernelStackEx(GuiStack, 0, Node);
|
||||||
|
}
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NTAPI
|
||||||
MmGrowKernelStackEx(IN PVOID StackPointer,
|
MmGrowKernelStackEx(IN PVOID StackPointer,
|
||||||
|
|
Loading…
Reference in a new issue