243{
245 PMMPTE StartPde, EndPde, PointerPte, LastPte;
247 PVOID NonPagedPoolExpansionVa;
251
252#if defined(_GLOBAL_PAGES_ARE_AWESOME_)
253
254
256 {
257
260 }
261
262#endif
263
264
267
268
269
270
274
275
276
277
281
282
284
285
286
287
293 DPRINT(
"NP Pool has been tuned to: %lu bytes and %lu bytes\n",
295
296
297
298
299
302 {
303
304
305
306 DPRINT1(
"Paged pool is too big!\n");
307 }
308
309
310
311
312
313
314
317
318
319
320
321
322
326
327
330 ASSERT(MaxSystemPtePages > 1000);
331
334
335
336
337
338
340
341
342
343
346
347
348
349
350
353 ASSERT(PageFrameIndex != 0);
354 DPRINT(
"PFN DB PA PFN begins at: %lx\n", PageFrameIndex);
356
357
359
360
361
362
363
367 while (StartPde <= EndPde)
368 {
371
374
375 StartPde++;
376 }
377
378
379
380
381
384 while (StartPde <= EndPde)
385 {
386
387
388
391
392
393
394
397
398
399
400
401 StartPde++;
402 }
403
404
405
406
410 while (StartPde <= EndPde)
411 {
412
413
414
417
418
419
420
423
424
425
426
427 StartPde++;
428 }
429
431
432
433
434
436
437
438
439
443 while (PointerPte <= LastPte)
444 {
445
446
447
450 }
451
452
453
454
458
459
462
463
465
466
468
469
472
473
474
475
477
478
479
480
482
483
484
485
487 DPRINT(
"Final System PTE count: %lu (%lu bytes)\n",
489
490
491
492
494
495
497
498
500
501
509
510
512
513
515
516
517
518
521
522
523
524
528
529
531
532
533
534
538
539
540
541
543
544
546
547
550 Pfn1->
u3.
e2.ReferenceCount = 0;
551
552
558
559
562
563
566
567
569 {
570
571
572
575 }
576
577
579
580
583
584
592
593
594 while (PointerPte <= LastPte)
595 {
596
598 if (!Pfn1->
u3.
e2.ReferenceCount)
599 {
600
604 Pfn1->
u3.
e2.ReferenceCount = 1;
607 }
608
609
610 PointerPte++;
611 }
612
613
615}
HARDWARE_PTE_ARMV6 TempPte
HARDWARE_PDE_ARMV6 TempPde
VOID NTAPI InitializePool(IN POOL_TYPE PoolType, IN ULONG Threshold)
PMMPTE MmLastReservedMappingPte
PMMPTE MiFirstReservedZeroingPte
PMMPTE MmFirstReservedMappingPte
PVOID MmSystemPteSpaceStart
VOID NTAPI MiInitializeSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE PoolType)
PFN_NUMBER MiNumberOfFreePages
VOID NTAPI MiInitializePfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
ULONG_PTR MmSubsectionBase
VOID NTAPI MiInitializeColorTables(VOID)
PFN_NUMBER NTAPI MxGetNextPage(IN PFN_NUMBER PageCount)
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
PFN_NUMBER MmMaximumNonPagedPoolInPages
VOID NTAPI MiInitializeNonPagedPoolThresholds(VOID)
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
VOID NTAPI MiMapPfnDatabase(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
FORCEINLINE VOID MI_WRITE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
SIZE_T MmSizeOfPagedPoolInBytes
PMMCOLOR_TABLES MmFreePagesByColor[FreePageList+1]
#define MI_MAPPING_RANGE_START
#define MI_HYPERSPACE_PTES
#define MI_MAPPING_RANGE_END
#define MI_WORKING_SET_LIST
#define MiAddressToPde(x)
#define MiPteToAddress(_Pte)
BOOLEAN KiI386PentiumLockErrataPresent
VOID NTAPI KeFlushCurrentTb(VOID)
FORCEINLINE PMMPFN MiGetPfnEntry(IN PFN_NUMBER Pfn)
#define MI_SET_PROCESS2(x)
NTSTATUS NTAPI MmInitializeProcessAddressSpace(IN PEPROCESS Process, IN PEPROCESS Clone OPTIONAL, IN PVOID Section OPTIONAL, IN OUT PULONG Flags, IN POBJECT_NAME_INFORMATION *AuditName OPTIONAL)
VOID NTAPI MiInitializeNonPagedPool(VOID)
VOID NTAPI MmInitializeBalancer(ULONG NrAvailablePages, ULONG NrSystemPages)
PFN_NUMBER MmAvailablePages
PVOID MmNonPagedSystemStart
PMEMORY_ALLOCATION_DESCRIPTOR MxFreeDescriptor
ULONG MmNumberOfSystemPtes
PVOID MmNonPagedPoolExpansionStart
MEMORY_ALLOCATION_DESCRIPTOR MxOldFreeDescriptor
PVOID MmNonPagedPoolStart
MMPTE ValidKernelPteLocal
MMPTE ValidKernelPdeLocal
VOID NTAPI MiComputeNonPagedPoolVa(IN ULONG FreePages)
struct _MMPFN::@1916::@1922 e2
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ ULONG Flags
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define PsGetCurrentProcess