Jérôme Gardou
826aec48de
[NTOS:MM] Fix build on whatever MSVC version triggered this
...
There is no real need to put static or extern "C" function in a special namespace anyway
2021-05-19 00:12:05 +02:00
Jérôme Gardou
374fef2d59
[NTOS:MM] Add private pages to process working sets
2021-05-18 23:42:19 +02:00
Jérôme Gardou
6a5fd8f487
[NTOS:MM] Relax requirements with regards to PFN lock when adding & removing entries in Working Sets
...
Once a page is used, holding the WS lock is enough until you want to free it.
2021-05-18 23:42:19 +02:00
Jérôme Gardou
3adf450867
[REACTOS] Addendum to 5c7ce4475e
- Fix MSVC 2015 build
...
Put data into PAGEDATA or INITDATA sections
Keep section declaration for prototypes
CORE-17540
2021-05-12 11:04:29 +02:00
Jérôme Gardou
f421bccbcc
[NTOS:MM] First shot for Working Set list support
...
- Initialize
- Add private page (no shared page support yet)
- Remove pages
- Trim
Yes, this is C++ in the kernel.
2021-05-04 12:02:41 +02:00
Jérôme Gardou
31afbf1054
[NTOS] Make some internal headers C++ aware
2021-05-04 12:02:41 +02:00
Jérôme Gardou
8df48f9876
[NTOS:MM] Introduce MI_IS_PROCESS_WORKING_SET helper function
2021-05-04 12:02:41 +02:00
Jérôme Gardou
6b2f05f9dd
[NTOS:MM] Implement turning working set shared lock to exclusive
2021-05-04 12:02:41 +02:00
Jérôme Gardou
cd085ac12f
[NTOS/MM] Implement Mi(Un)lockWorkingSetShared
...
Also fix checks when exclusively locking
2021-05-04 12:02:41 +02:00
Serge Gautherie
710acab83d
[NTOS:MM] MiSetPagingOfDriver(): Add an explicit #if around unreachable code
2021-04-26 10:27:20 +02:00
Jérôme Gardou
c48580135d
[NTOS:MM] Fix a bit page fault handler with regard to COW sections
2021-04-08 15:40:37 +02:00
Jérôme Gardou
a34d9bcfb6
[NTOS:MM] Share "page.c" between i386 & amd64 builds
2021-04-08 15:40:37 +02:00
Jérôme Gardou
7ea8312617
[NTOS:MM] Split MmCreateProcessAddressSpace in two parts
...
Generic one and arch-specific one.
Properly fail if we are out of resources.
Restore a lost assert.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
6c027d28f9
[NTOS:MM] Properly track system process hyper space PDE page
2021-04-08 15:40:37 +02:00
Jérôme Gardou
370982aa1d
[NTOS:MM] Make i386/page.c usable for all x86 variants
...
This includes PAE & amd64
2021-04-08 15:40:37 +02:00
Jérôme Gardou
b10d92a16c
[NTOS:MM] Use MI_MAKE_HARDWARE_PTE & friends in legacy Mm
2021-04-08 15:40:37 +02:00
Jérôme Gardou
43378411fb
[NTOS:MM] Rewrite arch-specifics of the legacy Mm
...
Properly handle PDE refcounting
Clean-up of the internal API
Enforce attaching to the process when modifying its memory layout, instead of
making circonvoluted mappings which always end up being broken.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
b445005c70
[NTOS:MM] Get rid of MmRosFlushVirtualMemory
...
It's not used anywhere now, and it will eventually be gone
2021-04-08 15:40:37 +02:00
Jérôme Gardou
9e121fb6c2
[NTOS:MM] Get rid of MmSetCleanAllRmaps and MmIsDirtyPageRmap
...
Everything is wrong with them. Bad locking. Bad logic.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
7bffb92099
[NTOS:MM] Let ARM3 handle invalid PDE for itself.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
36a92e6ea5
[NTOS:MM] Fix a bit the page-out/page-in logic
...
- Do not lock the section segment when we are serving a fault for a process private page.
- Do not keep the process address space lock while writing to pagefile.
- Do not wait for an event that might never be set.
2021-04-08 15:40:37 +02:00
Jérôme Gardou
82c908195c
Revert "[NTOS:MM] Allow MiMapPageInHyperSpace to be called from DISPATCH_LEVEL"
...
This reverts commit 8404d1a6ff
.
Not ready for prime time, sorry.
2021-04-07 23:26:44 +02:00
Jérôme Gardou
8404d1a6ff
[NTOS:MM] Allow MiMapPageInHyperSpace to be called from DISPATCH_LEVEL
...
Also annotate it to show its behaviour.
2021-04-07 23:09:26 +02:00
Oleg Dubinskiy
52f4d8019b
[NTOS:MM][NTOS:SE] Mute some noisy stubs
...
Mute debug prints of MmDoesFileHaveUserWritableReferences and SeAuditingFileEventsWithContext stubs.
These stubs are very noisy and create a lot of spam in the log when using Microsoft NTFS driver in ReactOS (with some other improvements applied).
Implementing those functions isn't badly required for the proper work of this driver, so better way for now is just mute these stubs a bit.
After my changes, they will be displayed only once, and the log will be more clear, so it will seem to be enough to understand that the driver calls these routines.
CORE-17409
2021-04-07 13:16:03 +02:00
Mark Jansen
5e928e5c92
[NTOS:MM] Stubplement cookie generation for drivers
2021-04-03 18:08:53 +02:00
Jérôme Gardou
998870c5ea
[NTOS:MM] Properly fail for invalid sizes of data section mappings
2021-03-30 22:20:15 +02:00
Jérôme Gardou
4c731adc04
[NTOS:MM] Fix compilation when PFN tracing is enabled
2021-03-30 17:22:09 +02:00
Jérôme Gardou
80f8beeeee
[NTOS/MM] Remove an outdated check
2021-03-30 17:13:19 +02:00
Jérôme Gardou
0187c1e113
[NTOS:MM] Fix PFN tracing
2021-03-30 16:26:43 +02:00
Jérôme Gardou
d1d1260f5f
[NTOS:MM] Fix integer arithmetics
2021-03-22 10:02:12 +01:00
Jérôme Gardou
42094071ee
[NTOS:MM] Silence noisy DPRINTs
2021-03-18 12:24:21 +01:00
Jérôme Gardou
4ff5d39edb
[NTOS:MM] Use a define for the big pool table occupation rate
2021-03-18 12:24:21 +01:00
Jérôme Gardou
8494688eeb
[NTOS:MM] Do not use atomic operations to set a bit while holding a lock.
...
Saving your fingers from typing it doesn't make it better code.
2021-03-18 12:24:21 +01:00
Jérôme Gardou
f06b58925d
[NTOS:MM] Implement shrinking big pool allocation table
...
Shrink when using 1/8 of its allocated capacity (thus use 25% of it at the end of the process)
Expand when using 3/4 of its allocated capacity (thus use ~40% of it at the end of the process)
2021-03-18 12:24:21 +01:00
Jérôme Gardou
54354712e2
[NTOS:MM] Fail allocating non-paged pool when running out of available pages
2021-03-18 12:24:21 +01:00
Jérôme Gardou
34630a06ca
[NTOS:MM] Do not bugcheck when we are freeing a big allocation for which we didn't manage to insert the tag
2021-03-18 12:24:21 +01:00
Jérôme Gardou
d5fa0788d8
[NTOS:MM] Silence a DPRINT which became noisy
2021-03-16 13:23:21 +01:00
Jérôme Gardou
a93e065ebc
[NTOS:MM] Do not chunk-read file when we are the modified-page-writer thread
2021-02-26 08:46:53 +01:00
Jérôme Gardou
35c091adaf
[NTOS:MM] Do not chunk-read files marked with FO_RANDOM_ACCESS
2021-02-26 08:46:53 +01:00
Timo Kreuzer
4b4bff0642
[NTOS:MM] Handle demand zero PTEs with MM_EXECUTE_READWRITE and MM_READWRITE
2021-02-16 18:02:57 +01:00
Jérôme Gardou
0573de22a0
[NTOS:MM] Do not assert on a case we actually support
2021-02-10 17:48:30 +01:00
Jérôme Gardou
73fd52a164
[NTOS:MM] Flush dirty pages after closing the page files.
...
CORE-17462
2021-02-10 11:14:19 +01:00
Victor Perevertkin
b705df731e
[NTOS:MM][FASTFAT_NEW] Fix DBG usage, fixes Release build
2021-02-05 11:54:10 +03:00
Jérôme Gardou
6f2b94c023
[NTOS:MM] Wake up the balancer as soon as we are low on page.
...
Fixes installing on a system with 64MB of RAM, if you feel like it.
2021-02-03 13:42:39 +01:00
Jérôme Gardou
b7eb0fddf3
Address PR review
2021-02-03 09:41:24 +01:00
Jérôme Gardou
c0bf352069
[NTOS:MM] Fix regression of MmCanFileBeTruncated
2021-02-03 09:41:24 +01:00
Jérôme Gardou
7f7abc9838
[NTOS:MM] Simplify code & fix MSVC x64 build
2021-02-03 09:41:23 +01:00
Jérôme Gardou
2ba1926037
[NTOS:MM][NTOS:CC] Performance improvement again
...
Read files by 64kb chunks instead of page-sized chunks.
2021-02-03 09:41:23 +01:00
Jérôme Gardou
625f273361
[NTOS:MM] More fine-tuning of the memory balancer
2021-02-03 09:41:23 +01:00
Jérôme Gardou
41475dfcd7
[NTOS:CC] Performance improvements
...
Do not ditch the pages as soon as the section are unmapped
Improve MmBalancer "algorithm" (or whatever you call that)
Various needed fixes to get this going.
2021-02-03 09:41:23 +01:00