[ros-dev] Re: [ros-diffs] [ion] 12774: Add more Critical Section Debug Data and fix two bugs.

Alex Ionescu ionucu at videotron.ca
Tue Jan 4 02:23:04 CET 2005


Joseph Galbraith wrote:

> ion at svn.reactos.com wrote:
>
>> +    DPRINT("Waiting on Critical Section: %x\n", CriticalSection);
>> +    if (CriticalSection->DebugInfo) 
>> CriticalSection->DebugInfo->EntryCount++;
>
>
> I'm just reading the diffs here, so I could be way
> off, but shouldn't this use an InterlockedIncrement...
> otherwise you could get a context switch between
> in the middle of your increment to another threading
> attempting to lock the critical section.  It is just
> debug information, but still...

I suppose that makes sense... I'll look into it.

>
> Also, looking at the rest of the code, I notice that
> spin count doesn't appear to be implemented.

No, not as of now. It was based on WINE code which doesn't implement 
this yet (AFAIK). 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.

>
> I don't have a build environment even setup, so
> take the attached patch with a grain of salt.
>
> The changes in RtlpCreateCriticalSEctionSem()
> are because the InterlockCompareExchangePointer()
> should already have written the new event into
> the data structure.

Yeah, you're right, it was a bit useless since the call already sets the 
new event if sucesful. We still have to compare with the old event 
though, not with 0.

>
> Maybe on day I'll manage to get my build environment
> setup again.

Are you on win32? Do you need any help setting it up?

>
> - Joseph
>
Best regards,
Alex Ionescu


More information about the Ros-dev mailing list