Rob Shearman wrote:
Yes it does. http://cvs.winehq.org/cvsweb/~checkout~/wine/dlls/ntdll/critsection.c?rev=1....
Hi Rob,
Looks like I was using an old revision of the code, since I hadn't seen the Spincount code. I will add it.
I have been optimizing it and adding more feature to make it stabler, so spin lock support for MP builds was on my list. Thanks for your patch... I'll take a look at it.
It would be good if someone could implement the stack backtrace capture functions as we could then remove critsec debugging hacks from all over the wine tree.
Ah, so that's what was using the hacks. If they are removed, then the code would be much easier to share. By the way, I've made some serious performance improvements to the code, by adding a static buffer which is used to hold up to 64 debug sections. The rest are then allocated by using the heap. This has a two fold advantage:
1) The first CS (used by the Heap Manager on ROS, probably on WINE too), one for RtlInitializeHeapManager and the other for RtlAllocateHeap now also have a valid Debug Section, because they use the static one. 2) Because the kernel-call is removed, it offers significant improvments on ROS, on WINE too, since there is less code that must run (a tiny loop versus a whole heap allocation).
I'm thinking about sending a patch to WineDevel... since it's only two functions to be added and the brute heap calls to be replaced by the function names, I think it would be easy to integrate.
Best regards, Alex Ionescu