Commit graph

44152 commits

Author SHA1 Message Date
Sir Richard ef4089933a [NTOS]: Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane.
svn path=/trunk/; revision=49559
2010-11-11 13:15:40 +00:00
Sir Richard d5c3a8295f [NTOS]: Use MI_PFN_ELEMENT in this code, as the extra checks done by MiGetPfnEntry are irrelevant and slow things down.
[NTOS]: Remove some old ReactOS hacks before we had MMROSPFNDATA.

svn path=/trunk/; revision=49558
2010-11-11 13:13:05 +00:00
Sir Richard 0bbcdaf47f [NTOS]: Fix a bug in MiRemovePageByColor which caused corruption of the page list and could lead to crashes, re-use of freed memory, assuming active memory was free, etc.
svn path=/trunk/; revision=49557
2010-11-11 13:08:41 +00:00
Sir Richard 7a047a7902 [NTOS]: Fix another bug in the continuous memory allocation code, which would go off-by-one while looping the PFN entries for the allocation, and corrupt the PteFrame/PteAddress of an unrelated PFN entry. If this PFN was in the active lists, it would cause page table leaks and faults, if the page was on a free list, it would override the colored list backlink and corrupt the list, later causing unlinked pages to remain linked to the list.
svn path=/trunk/; revision=49556
2010-11-11 13:05:52 +00:00
Art Yerkes 0cb645cb12 Part 1 of fixes: For some reason beyond me, I had abbreviated
MiCowSectionPage to always assume CoW rather than always not
CoW for cache sections.  

Make sure we're looking for cache type sections rather than
(as we were in the branch) data file sections.  More needed.

svn path=/trunk/; revision=49555
2010-11-11 08:15:50 +00:00
Sir Richard 64e92d2d8e [NTOS]: Fix bugs in MiAllocateContiguousPages. Fixes an ASSERT Caemyr was seeting a lot (the cont-able ASSERT).
svn path=/trunk/; revision=49541
2010-11-09 13:26:26 +00:00
Sir Richard f205f243bb [NTOS]: Assign a working set to the system process and correctly initialize its address space.
[NTOS]: Assign the working set list address, system-wide, but per-process (in hyperspace).
[NTOS]: Give every process its working set page, and store it. Build a bogus working set list (MMWSL).
[NTOS]: Use the process working set list (MMWSL) to track page table references during faults, just as Windows does.
[NTOS]: Correctly initialize the colored page list heads and assert their validity.

svn path=/trunk/; revision=49525
2010-11-08 12:35:50 +00:00
Sir Richard e8c269c0c4 [NTOS]: Optimize new context switching code to avoid wasted cycles.
svn path=/trunk/; revision=49523
2010-11-08 11:56:22 +00:00
Timo Kreuzer 44eef5b073 [SHLWAPI]
Explicitly add msvcrt before ntdll to use it's *sprintf functions. Fixes bug 5557

svn path=/trunk/; revision=49522
2010-11-08 10:04:43 +00:00
Sir Richard b4593924da [NTOS]: KiDispatchInterrupt (the DPC handler) in C, instead of ASM.
svn path=/trunk/; revision=49521
2010-11-08 02:37:17 +00:00
Sir Richard 77d20c89bf [NTOS]: Context switch in C instead of ASM. Can be made more portable, but it's a good start. Unless Timo rewrites it.
svn path=/trunk/; revision=49520
2010-11-08 02:15:53 +00:00
Pierre Schweitzer 58e3fc91d5 [NTOSKRNL]
Minor stuff.
Here is your commit Timo ;)

svn path=/trunk/; revision=49519
2010-11-08 00:31:00 +00:00
Timo Kreuzer 7d0aa25a0f [CRT]
In streamout(): fix a number of formatting bugs, round floats, fix issue with large unsigned values that were treated as signed, simplify some code.

svn path=/trunk/; revision=49516
2010-11-07 10:06:00 +00:00
Timo Kreuzer 2f7608101c [CRT]
In streamout() handle %%, negative fieldwidth and negative precision.

svn path=/trunk/; revision=49514
2010-11-07 00:59:41 +00:00
Timo Kreuzer 49cee181ca [CRT]
Fix a bug in streamout(), that could cause a buffer overrun and made msvcrt_winetest crash.

svn path=/trunk/; revision=49513
2010-11-06 23:03:22 +00:00
Amine Khaldi 87def142b6 [SPRINTF]
- Don't compile the new sprintf by default. Requested by Timo.

svn path=/trunk/; revision=49512
2010-11-06 15:38:43 +00:00
Timo Kreuzer a7fb24759b Fix build
svn path=/trunk/; revision=49501
2010-11-05 23:12:59 +00:00
Timo Kreuzer bf49c46b23 [CRT]
New implementation of all printf functions. It's stream based (like MS one is) rather than buffer based (like our old is). Floating point is not 100% finished, but current implementation is good enough to boot. It can be enabled by a config switch.

svn path=/trunk/; revision=49499
2010-11-05 22:21:36 +00:00
Sir Richard 7642321a2c [NTOS]: Make idle loop portable. Can be moved out of /i386 now.
svn path=/trunk/; revision=49486
2010-11-05 16:00:05 +00:00
Sir Richard 8a59fecfa5 [NTOS]: Implement the idle loop in C.
svn path=/trunk/; revision=49485
2010-11-05 15:58:34 +00:00
James Tabor c3f5d851e3 [Win32k] - Turn off debug prints.
svn path=/trunk/; revision=49475
2010-11-05 00:37:30 +00:00
James Tabor 200c27535e [Win32k|User32]
- This hook commit fixes the ros regression testing startup, but consider this a hax fix until more research in Global hooks has completed. More pointed Global hook tests are needed. Misc changes, removed unused storage pointers and reordering. For DosBOX, the mouse low level is now working and the keyboard low level should not be so intermittent as before, now sending messages from system desktop not from thread desktop, see bug 5670 for more details.

svn path=/trunk/; revision=49472
2010-11-04 23:45:34 +00:00
Aleksey Bragin 1dec9f52a4 [APPS]
- Damir Aliev: Properly convert encoding in cmdline tools.
See issue #3487 for more details.

svn path=/trunk/; revision=49466
2010-11-04 12:28:08 +00:00
Aleksey Bragin 2bb39272f6 [REGEDIT]
Adam Kachwalla <geekdundee@gmail.com>
- "Load Hive..." and "Unload Hive..." menu items implemented
- Make address bar case-insensitive
- Remove trailing slashes in address bar when at root keys (e.g. "HKEY_LOCAL_MACHINE\" or "HKEY_CURRENT_USER\")
- Address "go" button added
- Removed ~8px slack from bottom of the app (not needed and looks better)
- Factored out error displaying functions into error.c file.

See issue #5711 for more details.

svn path=/trunk/; revision=49465
2010-11-04 12:05:35 +00:00
Timo Kreuzer 3872d5db6c [KERNEL32]
Print delphi exception with the Exception code 0xeedfade, we were previously only checking for 0xeedface, maybe an older value.

svn path=/trunk/; revision=49464
2010-11-04 10:16:14 +00:00
Sir Richard 9cdff0edae [HAL]: Add INIT_FUNCTION where needed. Will save 860KB later.
svn path=/trunk/; revision=49463
2010-11-04 01:28:09 +00:00
Timo Kreuzer 9bcd5e12e8 [WIN32K]
- Make InitVideo return NTSTATUS and properly handle failure
- Silence a DPRINT, improve a DPRINT

svn path=/trunk/; revision=49458
2010-11-03 12:20:07 +00:00
Johannes Anderwald 5876e615b5 [KS]
- Fix several bugs in KsProbeStreamIrp
- If requestor is KernelMode - just save a pointer in Irp->AssociatedIrp.SystemBuffer (currently not used)
- If requestor is UserMode mark irp as buffered. Also set Flag IRP_INPUT_OPERATION when the ioctl is IOCTL_KS_READ_STREAM. This is important to propagate modifications to KSSTREAM_HEADERS (in particular DataUsed member)
- ReactOS KS can now be used in WinXP in combination with KSStudio. In order to make it fully work, ks needs to implement software bus functions
[PORTCLS]
- Rewrite internal irp queue handling
- It now supports multiple KSSTREAM_HEADERs per Irp, variable sized KSSTREAM_HEADERs per irp.
- Store the mapped virtual address not in the KSSTREAM_HEADER, as user programs will receive then invalid addresses
- Add checks whether this irp is for an sink pin or source pin
- Fix multiple bugs when the pin is looped buffer mode (How did this work before?)
- ReactOS portcls + WinXP now properly works with audio recording
[WDMAUD_KERNEL]
- Don't free associated stream header anymore
- Tested with VBox 3.2.10 + VmWare Player 3.1.2 + WinXP 

svn path=/trunk/; revision=49457
2010-11-03 11:16:33 +00:00
Aleksey Bragin db762f8fa5 [TASKMGR]
- Fix Russian translation, by spb-ivan92.
See issue #5685 for more details.

svn path=/trunk/; revision=49456
2010-11-03 09:09:57 +00:00
Timo Kreuzer 6cfc0da40b [WIN32K]
Change all Init functions to be NTAPI instead of FASTCALL, return NTSTATUS, and be an INIT_FUNCTION (saving incredible 2k). Simplify the initialization sequence by using a simple macro. Delete a comment that is not true anymore.
Move some globals to appropriate file.

svn path=/trunk/; revision=49455
2010-11-03 00:51:19 +00:00
Sir Richard 85e5b5be56 [NTOS]: Mark all initialization functions INIT_FUNCTION.
[NTOS]: This will save ~280KB of RAM once we dump INIT from RAM in a future patch.
[NTOS]: Display current free RAM at certain checkpoints.

svn path=/trunk/; revision=49445
2010-11-02 16:29:06 +00:00
Sir Richard ee45da75e0 [NTOS]: Add page-tracking macro calls wherever needed. MI_TRACE_PFNS is still off, though, so this code won't be called.
svn path=/trunk/; revision=49444
2010-11-02 15:16:22 +00:00
Sir Richard 5f9569d3c5 [NTOS]: Define an array of MI_USAGE integers to track what a PFN is used for.
[NTOS]: Extend the MMPFN structure for ReactOS-specific PFN tracing mechanism.
[NTOS]: Add macros to track page usage and process/extra-data (not yet used).

svn path=/trunk/; revision=49443
2010-11-02 15:05:37 +00:00
Sir Richard 3163a7e933 [NTOS]: CR3 should be PDE_BASE, not PTE_BASE!
[NTOS]: Define DemandZeroPte.

svn path=/trunk/; revision=49442
2010-11-02 15:02:41 +00:00
Sir Richard 3a3d75946e [NTOS]: Misc typo and cleanup fixes.
svn path=/trunk/; revision=49441
2010-11-02 14:58:39 +00:00
Sir Richard dae4714960 [NTOS]: Fix a bug in the MDL Code which would dereference a completely bogus page frame index.
svn path=/trunk/; revision=49440
2010-11-02 14:58:10 +00:00
Sir Richard c7b69d59e3 [NTOS]: Fix a bug in MmFindGapBottomUp which could make it return an address lower than what the caller said should be the lowest address.
svn path=/trunk/; revision=49439
2010-11-02 14:50:06 +00:00
Sir Richard 36429c0a64 [NTOS]: You can't just set MDL_LOCKED_PAGES without actually... locking the page. Add a MmReferencePage when doing so, so when that a paging read/write IRP gets completed (and MmUnlockPages is called), the page gets handled correctly. Can now boot with 64MB RAM without ASSERTs.
[NTOS]: Fix one of the MDL code paths that isn't getting called frequently.

svn path=/trunk/; revision=49438
2010-11-02 14:46:46 +00:00
Sir Richard 55256a107f [NTOS]: ASSERT nobody tries to put ARM3 pages into the MC_USER LRU.
svn path=/trunk/; revision=49437
2010-11-02 14:42:08 +00:00
Sir Richard 72e1ab5fb8 [NTOS]: Assert nobody tries to touch the sharecount of a non-ARM3 page.
svn path=/trunk/; revision=49436
2010-11-02 14:41:51 +00:00
Sir Richard 4bdf7033a7 [NTOS]: Fix typos.
svn path=/trunk/; revision=49435
2010-11-02 14:41:29 +00:00
Sir Richard 8c212103be [NTOS]: Sanity checks when dealing with creating/cleaning process address space.
[NTOS]: Set the VmDeleted flag when the process address space is being nuked.

svn path=/trunk/; revision=49434
2010-11-02 14:41:03 +00:00
Sir Richard f6fa150d19 [NTOS]: Make sure we don't get a user-pointer back from MmMapInSystemSpace.
svn path=/trunk/; revision=49433
2010-11-02 14:40:31 +00:00
Sir Richard 82ca671f14 [NTOS]: Remove merge artifact from newcc.
svn path=/trunk/; revision=49432
2010-11-02 14:40:07 +00:00
Sir Richard 893dc1fad1 [NTOS]: Protect Arty's changes with #ifdef NEWCC, otherwise this code ASSERTs and crashes as soon as a pageout operation is required. Since your advanced test/regression systems boot into configurations with 1GB+ RAM, you never even test these paths and one could put an ASSERT(FALSE) and you wouldn't even notice it (as proven).
svn path=/trunk/; revision=49431
2010-11-02 14:38:52 +00:00
Johannes Anderwald c600a169fb [KSUSER, KS, SYSAUDIO]
- Make pin / node / allocator create requests compatible to ms by removing obsolete slash before object class
- Return correct error code in ksuser's KsCreatePin
- ReactOS KS is now able to create audio pins in Windows XP, though playback is not yet working
- All changes except ksuser change has been verified to work with VBox 3.2.10
- KS user changes not tested yet as KSStudio not working in trunk

svn path=/trunk/; revision=49428
2010-11-02 09:37:30 +00:00
Art Yerkes f2e646d5b4 [CACHE]
The cache manager rewrite I started years ago has finally appeared in
ReactOS' trunk and although at this point it's not quite perfectly
integrated, it's enough to boot up the bootcd or livecd. To check out
the more mature original, check out arty-newcc-reactos, branch
arty-newcc on bitbucket.org . Amine Khaldi encouraged me quite a bit
to not give up on it, and was able to reach out and be an advocate
when i really wasn't able to.  Others agree that the time has come to
begin removing the old cache manager. I expect the remaining problems
in the version going to trunk will be taken care of relatively
quickly.

The motivation for this effort lies in the particularly hairy
relationship between ReactOS' cache manager and data sections. This
code completely removes page sharing between cache manager and section
and reimagines cache manager as being a facility layered on the memory
manager, not really caring about individual pages, but simply managing
data section objects where caching might occur.

It took me about 2 years to do the first pass of this rewrite and most
of this year to fix some lingering issues, properly implement demand
paging in ReactOS (code which didn't come with this patch in a
recognizable form), and finish getting the PrivateCacheMap and
SharedCacheMap relationship correct.

Currently, the new ntoskrnl/cache directory contains an own
implementation of data file sections. After things have settled down,
we can begin to deprecate and remove the parts of ReactOS' section
implementation that depend on a close relationship with cache
manager. Eventually, I think that the extra code added to
ntoskrnl/cache/section will be removed and ReactOS' own sections will
replace the use of the special MM_CACHE_SECTION_SEGMENT in the cache
path.

Note also, that this makes all cache manager (and new section parts)
use wide file offsets. If my section code were to take over other
parts of the ReactOS memory manager, they would also benefit from
these improvements.

I invite anyone who wants to to peek at this code and fix whatever
bugs can be found.


svn path=/trunk/; revision=49423
2010-11-02 02:32:39 +00:00
Timo Kreuzer 7697abf4a2 [WIN32K]
Disable GDI_DEBUG. It's using > 20 MB memory. Too much for some people ;-)

svn path=/trunk/; revision=49422
2010-11-02 01:17:45 +00:00
Johannes Anderwald 26895c3eac [PORTCLS]
- Portcls does not need to set the size of the audio buffer for completed irps. This is done in a completion callback in wdmaud. Verified with WinXP portcls
[WDMAUD_KERNEL]
- Free allocated mdls in the io completion routine. Also free the associated stream header.
[KS]
- Replace all ms portcls hacks by one. 
- MS Portcls is now working in ReactOS (which is nice for testing audio related bugs) 

svn path=/trunk/; revision=49417
2010-11-01 22:21:24 +00:00
Jérôme Gardou a6e4c15192 [PSDK]
- add TrustedDomainAuthInformationInternal and TrustedDomainFullInformationInternalFix to _TRUSTED_INFORMATION_CLASS.
Fixes build

svn path=/trunk/; revision=49415
2010-11-01 20:55:11 +00:00