Commit Graph
7724 Commits
Author SHA1 Message Date
Timo Kreuzer d50bc6057e [CRT]
Fix bugs in new printf implementation: use buffer size in _snprintf and check for the right failure return value of streamout_char.

svn path=/trunk/; revision=50251
2011-01-01 13:50:07 +00:00
Christoph von Wittich fdea91b64c [CRT]
import strtoi64 from wine 1.3.10

svn path=/trunk/; revision=50159
2010-12-27 12:45:03 +00:00
Christoph von Wittich 7785b6ca52 [CRT]
import MSVCRT_I10_OUTPUT from wine

svn path=/trunk/; revision=50153
2010-12-27 09:07:27 +00:00
Timo Kreuzer e7f8fba710 [RTL}
Replace RtlMoveMemory x86 asm code with the code from CRT's memmove, which is better. Now we can close bug #1941

svn path=/trunk/; revision=50116
2010-12-23 19:11:19 +00:00
Timo Kreuzer 2342366fe3 [FORMATTING]
Apply indentation of 4 spaces.

svn path=/trunk/; revision=50093
2010-12-22 13:33:09 +00:00
Timo Kreuzer 6e95cdc657 [CRT]
rename pow_asm.c to powl.c to reflect it's content.

svn path=/trunk/; revision=50069
2010-12-20 11:48:55 +00:00
Timo Kreuzer bc5452aa10 [CRT]
Fix bugs in converted asm file. Fixes Firefox color issues.

svn path=/trunk/; revision=50068
2010-12-20 10:16:43 +00:00
Aleksey Bragin 19e368a616 [RTL]
- Roel Messiant: Specify proper byte length of a unicode string. Fixes out of bounds access in actctx.c support code. No more half-cut active context stuff in debug logs.

svn path=/trunk/; revision=50031
2010-12-15 20:03:43 +00:00
Aleksey Bragin c19a377df2 [HEAP]
- Time has come to get rid of a slightly modified implementation of WINE's heap, which is a hack based on Windows 95's heap implementation, itself a hack of DOS memory management. It supported 3 out of the 18 possible NT Heap Flags, did not support custom allocation/deallocation routines, and was about 50-80x slower with fragmentation rates up to 500x higher when compared to NT's LFH (WINE is lucky because the advanced NT Heap features are used in kernel-mode usually, not in user-mode, and they are crossing their fingers for this being the same). Several high-end SQL/Database applications would significantly benefit from custom heap features provided by NT. Not to say about removing crappy support for a custom Commit routine and crappy support for User-defined flags and the User-defined value.

- So, the glorious moment for a new heap manager, which is (to remind you) a totally new heap manager, resembling real NT heap manager, based on data structures similar to Windows 2003 and Vista+'s heap structures, supporting advanced heap flags (e.g. useful for debugging), having substantially lower fragmentation rates (and thus speed and reliability), having native support for user-defined flags and user-defined values, also native support for a custom commit routine, which is very important for trunk's win32 subsystem. It also reserves, commits, decommits and frees memory on the fly, unlike existing heap manager which prefers to reserve and commit as much as possible, and doesn't decommit when it's no longer necessary. Not to say about support for per process heaps, with a proper lock, and a further support for a special so-called debug heap allocator (to be implemented in heapdbg.c) which will be useful for finding heap corruptions.

Yeah, I'm not a fun person :D

svn path=/trunk/; revision=50000
2010-12-10 09:33:20 +00:00
Aleksey Bragin 5afe6c4f39 [ATL]
- Ettl Martin: Make CComCriticalSection destructor virtual.
See issue #4975 for more details.

svn path=/trunk/; revision=49840
2010-11-28 12:10:59 +00:00
Timo Kreuzer 205fe71c5d [CRT]
Fix another typo

svn path=/trunk/; revision=49836
2010-11-28 09:53:22 +00:00
Timo Kreuzer af040adf50 [CRT]
Fix typos

svn path=/trunk/; revision=49830
2010-11-28 00:10:02 +00:00
Timo Kreuzer 1d70b8136a [ASM]
Merge asm related changes from cmake branch.

svn path=/trunk/; revision=49826
2010-11-27 22:12:15 +00:00
Sir Richard 1b065e7bab [CRT]: _assert should use DbgRaiseAssertionFailure which is (a) correct and (b) portable, instead of __debugbreak.
svn path=/trunk/; revision=49732
2010-11-23 16:36:54 +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
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
Johannes Anderwald bafe662783 [MMIXER]
- Enumerate MIDI devices and provide all necessary functions to deal with them
[WDMAUD_KERNEL]
- Implement support functions which call the provided functions of mmixer library
- Fix a bug in device interface request ioctl handler
- Midi devices should now be visible, capabilities be retrieved and opened / close
- Writing data is not yet supported

svn path=/trunk/; revision=49376
2010-10-31 14:34:41 +00:00
Johannes Anderwald 5dd7b0178c [MMEBUDDY]
- Getting device capabilities requires the unicode version of the structure
- Implement MIDM_OPEN, MIDM_CLOSE, MIDM_START, MIDM_STOP
- Implement MODM_OPEN, MODM_CLOSE
- Refactor MmeOpenWaveDevice into MmeOpenDevice add add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE
- Refactor MmeCloseWaveDeivce into MmeCloseDevice and add support MIXER_DEVICE_TYPE, MIDI_IN_DEVICE_TYPE, MIDI_OUT_DEVICE_TYPE

svn path=/trunk/; revision=49374
2010-10-31 13:20:11 +00:00
Gregor Schneider 2b2307cae4 [CRT] Remove empty file
svn path=/trunk/; revision=49342
2010-10-29 18:18:54 +00:00
Johannes Anderwald 28b8adb2ee - remove debug prints
- dedicated to christoph

svn path=/trunk/; revision=49316
2010-10-27 21:12:44 +00:00
Johannes Anderwald 5542d91941 [MMIXER]
- Apply a hack to filter out pins, which are not part of filter node processing path
- The hack filters out all pins which have a physical connection. Ideally the code should check if the pin is part of a different rendering path and in that case remove the pin. 
- Revert 49167

svn path=/trunk/; revision=49189
2010-10-17 21:15:21 +00:00
Sylvain Petreolle f33d927f43 Patch by Roel Messiant :
Initialise PPB to zero.

The change from NtAllocateVirtualMemory to RtlAllocateHeap causes the memory to
be not automatically initialised to zero anymore.
Not every field of the PPB (for which the memory is allocated) gets explicitly
initialised, meaning this results in them having bogus values.

One of the now uninitialised fields is DebugFlags, which results in
DbgBreakPoint being called in NtProcessStartup.  Simply ensuring the memory is
zeroed makes it all better again.

svn path=/trunk/; revision=49180
2010-10-17 11:12:54 +00:00
Sir Richard 68e8260b98 [RTL]: Fix a bug introduced Mon Dec 6 00:25:14 1999 UTC (10 years, 10 months ago) in revision 828. NtFreeVirtualMemory takes a pointer to the address to free, not the address instead. For the last 11 years, freeing the process parameter block resulted in freeing whatever the first value in the structure is, which is MaximumLength and initialized to 0x1000. ReactOS would then free whatever random address was in that area. In real Windows, it is illegal to free an allocation in the middle of the base address, and this call failed with the new VAD code. ReactOS either leaked the memory or freed random data, who knows.
[RTL]: Make the PPB live in the Heap instead of having its own virtual allocation, fixing the issue above. Stop rounding it to a PAGE_SIZE, and just use the space required.

svn path=/trunk/; revision=49169
2010-10-16 14:20:30 +00:00
Kamil Hornicek 3b63f433a0 [MMIXER]
Amendment to rev. 49167 requested by Caemyr.

svn path=/trunk/; revision=49168
2010-10-16 13:55:09 +00:00
Johannes Anderwald 53ddbca64c [MMIXER]
- Disable assert for now

svn path=/trunk/; revision=49167
2010-10-16 12:39:49 +00:00
Johannes Anderwald aa8c6826c3 [MMIXER]
- Add support for topologies where pins directly connect to other pins without nodes in between
- Check if the topology contains node. Fixes assert hit in VmWare Player(sound is not working)
- Thanks to Caemyr for testing

svn path=/trunk/; revision=49166
2010-10-16 12:36:21 +00:00
Aleksey Bragin e700e19237 [HEAP]
- Fix a typo which lead to incorrect flags being forced. Fixes last remaining major winetest failures (only 1 GlobalAlloc/Free implementation related one is left to be fixed).

svn path=/trunk/; revision=49156
2010-10-15 15:53:10 +00:00
Pierre Schweitzer 1a3aa9c454 [HEAP]
Hackfixed build by stubbing RtlpValidateHeapHeaders(), RtlpValidateHeapEntry() and hackplementing RtlpValidateHeap().
To be properly fixed.

svn path=/trunk/; revision=49155
2010-10-15 15:05:15 +00:00
Aleksey Bragin 7f8660190b [HEAP]
- Implement parameters validation ("DebugHeap") in all used RTL heap APIs. Winetests failures down to 4.

svn path=/trunk/; revision=49154
2010-10-15 13:16:48 +00:00
Timo Kreuzer 6fa23913f1 [CRT]
Add powf() wrapper

svn path=/trunk/; revision=49153
2010-10-15 12:33:08 +00:00
Johannes Anderwald 8158082c80 [WDMAUD_KERNEL]
- Implement registering event routine which gets called when a topology node (volume / mute node) changes
- Implement fetching event changes
[MMIXER]
- Implement support routines which get called when a topology node changes its state
- Volume changes / mute on/off changes should now be broadcasted again to all listening applications

svn path=/trunk/; revision=49151
2010-10-15 02:24:35 +00:00
Johannes Anderwald 8a0913d231 [MMIXER]
- Rewrite topology node enumeration algorithm
- Old algorithm didnt properly take in account sum/mux nodes, may assign nodes to multiple lines and was not able to detect circuits which may lead to infinite loops
- New algorithm properly partitions the nodes and also checks if nodes has already been assigned. As a plus, it is also faster
- Algorithm based on msdn http://msdn.microsoft.com/en-us/library/ff538873(v=VS.85).aspx
- Tested on VBox 3.28 (AC97)
- Please retest supported soundcards for regressions


svn path=/trunk/; revision=49150
2010-10-15 00:20:15 +00:00
Aleksey Bragin 4758da752f [HEAP]
- Add special debug heap function declarations and stubs.
- Add a useful inline for detecting whether a special or normal heap is going to be used.

svn path=/trunk/; revision=49149
2010-10-14 20:55:38 +00:00
Aleksey Bragin 57f4a96cc1 [HEAP]
- Add ability to dynamically allocate UCR descriptors when preallocated amount is exhausted.
- Fix a few bugs in RtlpFindAndCommitPages and in deactivated RtlpDecommitFreeBlock.
- Enable free blocks decommitting.
- New heap manager would now be ready to replace the old one.

svn path=/trunk/; revision=49147
2010-10-14 20:04:20 +00:00
Pierre Schweitzer 6d0861e9ed [NTOSKRNL]
Implemented IopFetchConfigurationInformation(), IopCreateArcNamesCd(), IopCreateArcNamesDisk(), IopVerifyDiskSignature()
Removed IopApplyRosCdromArcHack(), IopGetDiskInformation(), IopAssignArcNamesToCdrom()
Finally, rewritten IopCreateArcNames()

To make it short, this is the rewrite of ARC names handling in the kernel.
This brings our kernel to a higher state of existence. Indeed, it's leaving NT4 design for a proper NT5.2 design, with less hacks, less ROS specific stuff and such.
This code handles the mount manager we don't have yet.

svn path=/trunk/; revision=49131
2010-10-12 20:29:50 +00:00
Aleksey Bragin 1bcf80bc88 [HEAP]
- Implement heap validation support.

svn path=/trunk/; revision=49126
2010-10-12 18:34:48 +00:00
Aleksey Bragin 71e0a64605 [HEAP]
- Fix DWORD -> ULONG in function definitions too.

svn path=/trunk/; revision=49113
2010-10-11 10:29:41 +00:00
Aleksey Bragin 0568f4e2ce [HEAP]
- Fix RtlQuery/SetHeapInformation prototypes, move them to an appropriate place.
- Implement RtlQuery/SetHeapInformation.
- Implement in-place block growing.
- Amount of winetest heap failures is down to 6 (3 exceptions still happen).

svn path=/trunk/; revision=49111
2010-10-11 08:39:04 +00:00
Aleksey Bragin d498e714c6 [HEAP]
- Add 64 bit compatibility.

svn path=/trunk/; revision=49090
2010-10-10 11:16:55 +00:00
Aleksey Bragin de743e0f9b [HEAP]
- Move (and cleanup) private heap definitions and structure to a standalone header file heap.h. It's explicitly included in heap_rewrite.c and heapdbg.c to prevent conflicts with the existing heap manager in heap.c.

svn path=/trunk/; revision=49071
2010-10-09 13:02:34 +00:00
Aleksey Bragin c76fdb3cd6 [HEAP]
- Implement setting/getting heap user values and flags (very easy provided heap design is now proper). Amount of winetest failures is down to 12 (but 3 crashes in child processes).

svn path=/trunk/; revision=49069
2010-10-09 12:49:30 +00:00
Aleksey Bragin a6dc26d616 [RTL]
- Fix RtlSetUserFlagsHeap declaration and definition.

svn path=/trunk/; revision=49064
2010-10-09 09:19:33 +00:00
Aleksey Bragin 46819fb8ac [HEAP]
- Roel Messiant: Fix infinite loop in RtlDestroyHeap if heap contained big blocks.

svn path=/trunk/; revision=49058
2010-10-08 20:17:39 +00:00
Aleksey Bragin 129f3f133d [HEAP]
- Set proper heap flags (tail and free checking) in case heap validation is enabled. Fixes another bunch of winetests.

svn path=/trunk/; revision=49057
2010-10-08 19:30:23 +00:00
Aleksey Bragin 3dea59438f [HEAP]
- Roel Messiant: Remove old-style Peb->ProcessHeaps assignment from RTL, it's already done by MM.
- Roel Messiant: Fix a typo (missing else) between two if branches, which fixes commit routine support.
- Properly save requested size if 0 was given (1 should be allocated, but 0 saved as a requested amount). Fixes winetests.
- Remove unnecessary dprints.

svn path=/trunk/; revision=49048
2010-10-08 09:47:48 +00:00
Eric Kohl d6c9064e9d Fix indentation. No code changes.
svn path=/trunk/; revision=49041
2010-10-07 19:58:04 +00:00
Aleksey Bragin 9dabd64349 [HEAP]
- Fix allocated/free memory fillers to match those Windows uses (winetests)
- Add missing coalesce-on-free flag check in RtlCreateHeap
- Turn on tail check/pattern filling in RtlAllocateHeap.
- Add extra stuff storage support in RtlAllocateHeap and its helpers.
- Set win32 statuses where necessary.
- Return success in RtlValidateHeap to reduce spam when running winetest.

svn path=/trunk/; revision=49034
2010-10-07 17:05:29 +00:00