Commit graph

37319 commits

Author SHA1 Message Date
Christoph von Wittich
25e9d83a07 replace some values by constants
svn path=/trunk/; revision=41714
2009-06-30 14:21:33 +00:00
Aleksey Bragin
e468760dd8 - Rewrite VideoPort and Win32k (Eng) event functions to:
* Use a documented ENG_EVENT structure (thus be compatible with Windows videoprt/win32k) instead of a stupid (PKEVENT) casting everywhere through EngEvent or VideoPort event functions;
 * Implement additional checks for user mapped events in EngDeleteEvent and EngWaitForSingleObject;
 * Implement EngReadStateEvent and EngClearEvent.
 * Provide a better, readable code which matches kernelstyle coding guidelines;
 * Remove (stub out) totally incorrect and buggy map user events support;
- Compile videoprt with ms-extensions flag enabled.

svn path=/trunk/; revision=41713
2009-06-30 13:42:42 +00:00
Aleksey Bragin
615a35bf83 - Remove empty directory (include/reactos/drivers/drivers).
svn path=/trunk/; revision=41712
2009-06-30 13:10:27 +00:00
Christoph von Wittich
b82cc3d686 get rid of obsolete SHLocalAlloc/Free functions and export the correct v6 functions instead
patch by <jerome dot gardou at laposte dot net>

svn path=/trunk/; revision=41711
2009-06-30 10:48:41 +00:00
ReactOS Portable Systems Group
c254a0e212 - Move MmIsThisAnNtSystem and MmQueryMemorySize to mmsup.c instead of randomly in mminit.c.
- Cleanup some externs that were never referenced in mminit.c.
- Remove MiShutdownMemoryManager since it was dead code.
- There is no need to define the MiKseg0Start/End variables and loop through the memory descriptors to find the last kernel image. We already have this information through LoaderPagesSpanned saved in MmBootImageSize.
  - Removed these variables, code that depended on them, and MiGetLastKernelAddress, and switch to just using MmBootImageSize, which simplifies things a lot.
- Also simplify the way that the initial memory latout is setup. Now the PFN database will always start after MmBootImageSize + KSEG0_BASE, instead of relying on the fact FreeLDR, on certain machines, may have had leftover space in the 6MB allocation that it makes (And worse, assuming FreeLDR on all architectures will allocate 6MB).
  - This standardizes the PFN database address and makes the code portable.
  - Same for the nonpaged pool address.
- Should not call MmInitializeHandBuiltProcess for the idle process -- this will be called for the system process in PsCreateProcess.
  - The only thing we need, as the comment says, is the kernel MADDRESS_SPACE, so just initialize the lock for it.
- Do not zero MmStats since the load-linker takes care of that for us since it's a global.


svn path=/trunk/; revision=41710
2009-06-30 10:45:36 +00:00
ReactOS Portable Systems Group
15eecb0b40 - Cleanup some debug-only debug prints.
- Make the VA-range-printing debug prints match the same format as those in ReactOS Mm (MiDbgKernelLayout).
  - Add the appropriate number of spaces so that the layout appears continuous, even though it's coming from two source files.
  - This makes it easy to see the VA mappings at boot (but not all of them).


svn path=/trunk/; revision=41709
2009-06-30 10:38:51 +00:00
ReactOS Portable Systems Group
f91f8ec7cf - Rewrite MmAllocateNonCachedMemory and MmFreeNonCachedMemory to use the new functionality present in ARM3.
- These functions now use the MDL routines to allocate their physical memory, since the constraints and requirements are identical as for a non-cached MDL mapping.
  - As for the virtual address space, it is guaranteed once again by System PTEs!
    - If it's not getting old already, optimizations to the System PTE code will, yet again, yield improvements here as well.
- This is the last large kernel-facing memory allocator that needed updating to use System PTEs instead.
  - Only the pool allocator remains (which, for nonpaged pool, also uses System PTEs, present in the nonpaged pool expansion VA).
    - That effort will take significantly longer.


svn path=/trunk/; revision=41708
2009-06-30 08:55:18 +00:00
ReactOS Portable Systems Group
bd27f08336 - Major rewrite of Memory Descriptor List (MDL) implementation (moving it towards using System PTEs).
- MmCreateMdl, MmSizeOfMdl: No Change.
  - MmBuildMdlForNonPagedPool: Do not use MmGetPfnForProcess, just normal PMMPTE manipulation.
    - This seems to cause issues in certain scenarios, because in ReactOS, nonpaged pool, a resident and guaranteed resources, does not always have its PDEs mapped!
    - By calling MmGetPfnForProcess, this wound up in the annals of ReactOS mm code, which lazy-remapped the PDE. We detected this issue specifically in the cache manager, and fixed it there. It should not appear anywhere else.
  - MmAllocatePagesForMdl, MmAllocatePagesForMdlEx, MmFreePagesFromMdl:
    - The *Ex function is now implemented.
    - Allocating pages now uses MiAllocatePagesForMdl, which is based on the older MmAllocPagesSpecifyRange.
      - The code is cleaner, better commented, and better handles partial MDLs.
      - Cache flags are still ignored (so the Ex functionality isn't really there).
  - MmMapLockedPages, MmMapLockedPagesSpecifyCache, MmUnmapLockedPages:
    - These functions now use System PTEs for the mappings, instead of the hacked-up "MDL Mapping Space".
      - This frees up 256MB of Kernel Virtual Address Space.
      - Takes advantage of all System PTE functionality.
      - Once again, optimizations in the System PTE code will be felt here.
    - For user-space mappings however, the old code is still kept and used.
      - MiMapLockedPagesInUserSpace and MiUnMapLockedPagesInUserSpace are now in virtual.c and provide this.
  - MmProbeAndLockPages, MmUnlockPages:
    - The pages are actually probed now, in SEH. This did not seem to happen before (did someone misread the function's name?)
    - Probe for write is only done for write access to user pages (as documented).
    - We do not probe/check for write access for kernel requests (force Operation to be IoReadAccess).
    - Proper locking is used now: Address Space lock for user mappings, PFN lock for kernel mappings.
    - Faulting in pages (to make them available before locking) is now done outside the address space/PFN lock.
      - You don't want to be holding a spinlock/mutex while doing disk I/O!
    - For write/modify access, if the PTE is not writable, fail the request since the PTE protection overrides.
      - However, if the PTE is writable but also copy on write, then we'll fault the page in for write access, which is a legitimate operation for certain user-mode scenarios.
      - The old version always provided the CopyOnWrite behavior, even for non-CopyOnWrite pages!
    - Reference and lock every valid page that has a PFN entry (non-I/O Pages).
      - The older code did not seem to lock pages that had to be faulted in (weren't already valid).
    - Cleanup the cleanup code (no pun intended). Because we now mark the pages as locked early-on, and because of changes in MmUnlockPages, we can simply use MmUnlockPages in case of error, since it will be able to fully back-out and references/locks that we did.
      - Previous code attempted to do this on its own, in a pretty inconsistent manner, which would leave page leaks (both in references and lock count).
    - In MmUnlockPages, not as many changes, but we now:
      - Still make sure that an I/O Mapping MDL doesn't have valid PFN database pages (non-I/O).
        - An MDL can cover pages that are both I/O mapped and RAM mapped, so we have to unlock/dereference the latter instead of skipping them as the old code did.
      - Use the PFN lock when checking pages and unlocking/dereferencing them.
  - Overall, non-complete MDLs are now marked by having a -1 PFN, and the MDL code has been updated to early-break out of page-scanning loops and/or ignore such pages, which can happen in a sparse MDL.
  - Implementation has been tested on VMWare and QEMU for a variety of tasks and was found to be reliable and stable.

svn path=/trunk/; revision=41707
2009-06-30 08:29:22 +00:00
Cameron Gutman
fdf20e8c9a - Memtrack enhancements
- It now warns us when it detects an entry that wasn't freed by a memtrack-enabled function
 - It also provides some info when it detects a double free
 - Removed some extra tag tracking junk

svn path=/trunk/; revision=41705
2009-06-30 02:30:36 +00:00
Matthias Kupfer
90f47c629c - revert selecting color and inactive menu state, because it doesn't work that way
- needs further invastigation

svn path=/trunk/; revision=41704
2009-06-30 00:44:59 +00:00
Colin Finck
66873243b7 Andrew Steinborn (asteinborn78@gmail.com)
- Update Firefox link to 3.0.11
  Will also be merged to the 0.3.10 release once I clean up the Downloader list there.

See issue #4642 for more details.

svn path=/trunk/; revision=41702
2009-06-29 22:21:11 +00:00
Christoph von Wittich
fad8c3dbfa fix formatting
svn path=/trunk/; revision=41700
2009-06-29 21:10:40 +00:00
Cameron Gutman
6bed52e321 - Allocate IP_PACKET on the stack
- Reduces non-paged memory consumption

svn path=/trunk/; revision=41698
2009-06-29 20:18:32 +00:00
Matthias Kupfer
44ab91c5e6 - continue "marletting"
- scrollbar size grip with marlett
- untested for DFCS_SIZEGRIPRIGHT, but should work too

svn path=/trunk/; revision=41697
2009-06-29 20:18:21 +00:00
Christoph von Wittich
c80e60de20 more header cleanup
svn path=/trunk/; revision=41696
2009-06-29 19:50:12 +00:00
Christoph von Wittich
9458da0029 fix build
svn path=/trunk/; revision=41695
2009-06-29 18:47:29 +00:00
Colin Finck
4d9e5830a1 SVN maintenance: Remove some svn:keywords properties
svn path=/trunk/; revision=41694
2009-06-29 18:24:35 +00:00
Christoph von Wittich
c80579baa7 include winreg.h
svn path=/trunk/; revision=41693
2009-06-29 18:23:48 +00:00
Christoph von Wittich
567fa14209 sync test.h with wine 1.1.24
svn path=/trunk/; revision=41691
2009-06-29 17:57:47 +00:00
Christoph von Wittich
5c86565676 define WINE_UNICODE_API msvc compatible
svn path=/trunk/; revision=41690
2009-06-29 17:53:26 +00:00
Christoph von Wittich
9efabca05c some header cleanup
svn path=/trunk/; revision=41689
2009-06-29 17:38:57 +00:00
Matthias Kupfer
6d45e8b2a1 CBS_DISABLENOSCROLL ist quite useless
svn path=/trunk/; revision=41688
2009-06-29 17:24:42 +00:00
ReactOS Portable Systems Group
2d48fb35be - Fix an incorrect (should be 1024) ASSERT by removing it entirely (no real point to having it).
- Fixes issues on systems where it turns out the PDE-alignment actually goes beyond 4 million bytes (since 4MB is a little bit more, and is the maximum alignment-based boost you can get).


svn path=/trunk/; revision=41687
2009-06-29 17:17:22 +00:00
Matthias Kupfer
6ac24476f4 fix scrollbar button issue and make it look like windows
svn path=/trunk/; revision=41686
2009-06-29 16:47:56 +00:00
Christoph von Wittich
35b378556e sync wincrypt.h with wine 1.1.24
svn path=/trunk/; revision=41685
2009-06-29 16:26:46 +00:00
Christoph von Wittich
06f4d32679 -revert IXP700 change as it doesn't seem to fix the issue (AHCI only?)
-fix support for ICH7,ICH7M,ICH8,ICH8M,ICH9,ICH9R,ICH9M and ICH10 in compat mode

svn path=/trunk/; revision=41684
2009-06-29 14:32:37 +00:00
Matthias Kupfer
675f170bbc - minor improvements in drawing
- remarks for problems and further changes

svn path=/trunk/; revision=41682
2009-06-29 11:23:10 +00:00
James Tabor
15f261eec5 - Fix build: use gpsi->dwInstalledEventHooks instead of gpsi->SrvEventActivity
svn path=/trunk/; revision=41680
2009-06-29 06:07:15 +00:00
Timo Kreuzer
5dd7ba40f8 - Remove ntuser syscolor functions from win32k (NtUserCallTwoParam)
- Remove syscolor pen support from win32k
- use gpsi->dwInstalledEventHooks instead of gpsi->SrvEventActivity
- remove reactos specific fields from SERVERINFO

svn path=/trunk/; revision=41679
2009-06-29 03:36:31 +00:00
Timo Kreuzer
314b21119c Get rid of the SysColorPen stuff in user32, it's a wine concept. Use DC pen instead.
svn path=/trunk/; revision=41678
2009-06-29 02:49:57 +00:00
Johannes Anderwald
cbad176bd8 - Remove alternative definition of KSDATAFORMAT which was introduced in 41468 and also exists in MS header
- Fixes breakage of AC97 in real hw
- MS should start fixing their headers

svn path=/trunk/; revision=41677
2009-06-28 23:16:41 +00:00
Christoph von Wittich
6a728de43e add SIIMIO flag for IXP700 like done for Silicon Image controllers
svn path=/trunk/; revision=41676
2009-06-28 21:02:44 +00:00
Aleksey Bragin
5f39190d38 - Prevent PEVENT type redifinition (which is fine with MSVC but not with GCC).
svn path=/trunk/; revision=41675
2009-06-28 20:52:37 +00:00
Johannes Anderwald
92fa1b9f95 - Fix broken check for KSDATARANGE_AUDIO
- Zero struct

svn path=/trunk/; revision=41674
2009-06-28 20:06:45 +00:00
Aleksey Bragin
07fd6e0b76 - Add ENG_EVENT structure definition (from MSDN) to ntddvdeo.h.
- Fix PEVENT definition in video.h: it's not some mystic VIDEO_PORT_EVENT which is not defined anywhere, it's a documented structure, which has to be compatible with the structure used in win32k EngEvent* functions too.

svn path=/trunk/; revision=41673
2009-06-28 18:58:45 +00:00
Matthias Kupfer
831c3b7900 add svchost.exe to install package
svn path=/trunk/; revision=41672
2009-06-28 18:23:05 +00:00
Daniel Reimer
4a92fcca6f Sync wordpad and winhlp32 with wine 1.1.24.
svn path=/trunk/; revision=41671
2009-06-28 17:27:56 +00:00
Colin Finck
1daa242cc5 - Give the "windows" module a more meaningful name.
It's now called "optional" as it started to contain other stuff apart from Windows native libraries.
- Add an optional file reference to the Systema font for Japanese text. The Japanese ROS GUI is already using it.
  This is probably just an intermediate solution as the font is Japanese-only (no Chinese or Korean support) and might not fit that well for dialogs, but it should serve us well for some time.

svn path=/trunk/; revision=41666
2009-06-28 14:41:02 +00:00
KJK::Hyperion
b9613ba11f modified base/applications/taskmgr/affinity.c
modified   base/applications/taskmgr/debug.c
modified   base/applications/taskmgr/endproc.c
modified   base/applications/taskmgr/priority.c
   Arch Blackmann has never heard of exotic features of the C language such as "subroutines"

modified   base/applications/taskmgr/dbgchnl.c
modified   base/applications/taskmgr/procpage.c
modified   base/applications/taskmgr/procpage.h
   Did you know that Task Manager killed the wrong process when using the context menu? Fixed by using a sophisticated "subroutine" that reads the process entry index from the currently selected list item's client data, replacing the copy-pasted code that used the index of the list entry as the process entry index (which only worked before due to no sorting)
   Save the sort column and order

modified   base/applications/taskmgr/taskmgr.c
   Sort by image name by default

svn path=/trunk/; revision=41664
2009-06-28 14:22:09 +00:00
Johannes Anderwald
a40dc20557 - Fix build
svn path=/trunk/; revision=41663
2009-06-28 14:12:58 +00:00
Johannes Anderwald
4a0debf9c8 - Start implementing the stream class driver
- Implemented StreamClassRegisterAdapter, StreamClassReenumerateStreams, StreamClassDebugAssert, StreamClassDebugPrint, StreamClassGetDmaBuffer
- Drivers using stream class driver should now be able to initialize

svn path=/trunk/; revision=41662
2009-06-28 13:58:47 +00:00
Christoph von Wittich
593091354a fix formatting
svn path=/trunk/; revision=41661
2009-06-28 13:52:27 +00:00
Dmitry Chapyshev
a291ebef7a - Change icon for msiexec to Tango icon
svn path=/trunk/; revision=41660
2009-06-28 09:21:47 +00:00
ReactOS Portable Systems Group
9aa3e64dfc - Create mmsup.c in ReactOS memory manager directory. It hosts misc support functions:
- Copy kmap.c here, since it's the very definition of "misc support function"
  - Copy some exported functions in mm.c which were listed as "misc functions"
    - Warn that current implementation of MmIsNonPagedSystemAddressValid will kill kittens.
- Rename mm.c to mmfault.c, since other than the misc functions now in mmsup.c, it was all routines to handle page/access faults.
  - Warn that MmIsAddressValid, as currently implemented, kills puppies.
  - Move WriteWatch functions to virtual.c since they're part of the Virtual API system call set already hosted there.
  - Move the global variables that people had been throwing in here to mminit.c, which is slightly more appropriate.
- Move wset.c's MmTrimUserMemory to balance.c, since that's where all other similar functions are located.
  - Incidentally, kill wset.c, as this was the only function present.
- No functional changes, just refactoring and cleanup (other than warning the critter murder the two broken functions will achieve if called).

svn path=/trunk/; revision=41659
2009-06-28 07:52:30 +00:00
ReactOS Portable Systems Group
6da15076da - Move all the functions from drvlck.c and verifier.c to ARM3's drvmgmt.c:
- "Managing driver managing" (by David Welch) is no more... the routines have been properly renamed and cleaned up.
  - Also moved Driver Verifier helper routines in here, and fixed a couple of bugs:
    - Do not allow hooking of the kernel or HAL image (tested on Windows Server 2003)
    - Cleanup some useless variable redefinitions and code complexity.
  - Documented what some of the Mm Lock/Unlock Pageable Section/Driver functions should do, for later if needed.
  - Made aliasses so the typo "Pagable" functions redirect to the correct "Pageable" functions.
  - No functional change -- the Verifier functions were unused, and the drvlock.c functions were unimplemented (and still are).
  - Also move one more *Pageable* function from wset.c to ARM3's drvmgmt.c -- it seemed to have been a lost orphan (Also unimplemented).


svn path=/trunk/; revision=41658
2009-06-28 07:32:52 +00:00
ReactOS Portable Systems Group
ca525de77d - Reimplement MmAllocateContiguousMemory, MmAllocateContiguousMemorySpecifyCache, MmFreeContiguousMemory, MmFreeContiguousMemorySpecifyCache:
- Use a smarter algorithm (as described here: http://www.microsoft.com/whdc/Driver/tips/ContigMem.mspx) to first try to satisfy the allocation by a simple nonpaged pool allocation (for cached requests only).
    - This range is then checked for physical continuity, since it's not guaranteed for non-initial-pool allocations (and right now in ReactOS, it never is).
  - As a fallback, Windows NT then attempts to scan free nonpaged pool pages. This is not yet implemented since the ReactOS nonpaged pool is not usually contiguous (to the level that NT's is).
    - When the ARM pool is implemented and replaces nonpaged pool, this code path will have to be implemented.
  - As a last resort, the actual PFN database is scanned for contiguous free pages.
    - ReactOS used MmGetContiguousPages for this, which blindly scanned the PFN database. New MiFindContinuousPages will scan the physical memory descriptor block recently implemented, which avoids going over pages we already know are going to be unusable.
    - The ReactOS function also held the PFN lock for the entire duration of the scan, which is significant on systems with large memory. Instead, we make an initial unsafe scan first, and only lock when we think we've found a correct range (and we'll then reconfirm the ranges).
    - Finally, the older function actually did a double-scan to try to avoid using memory ranges under 16MB, which was useless on today's systems and also rather inefficient.
    - Other than that, the actual setup of the PFN entry is copy-pasted from the old ReactOS function, so nothing's changed there -- the page still looks the same, but the selection algorithm is faster and more accurate.
  - Once the pages are found, we piggyback on the new I/O mapping mechanism (which uses System PTEs) instead of doing it all over by hand as before.
  - Since the underlying support is still System PTEs, once again, optimizations to that component will yield significant improvements here too.

svn path=/trunk/; revision=41657
2009-06-28 05:43:12 +00:00
James Tabor
25e75aa265 - Add more hooks, where wine has them placed. Fixed user32 hooks for win32k.
svn path=/trunk/; revision=41656
2009-06-28 03:02:15 +00:00
Timo Kreuzer
f0ab7bf60b unbreak build of rostests
svn path=/trunk/; revision=41655
2009-06-28 00:05:51 +00:00
Christoph von Wittich
21351adff5 fix advapi32 crypt winetests
patch sent to wine

svn path=/trunk/; revision=41654
2009-06-27 23:55:29 +00:00
Timo Kreuzer
1fc4b3e8ca [FORMATTING] Fix indentation, no code change
svn path=/trunk/; revision=41653
2009-06-27 23:54:02 +00:00