[ros-kernel] Commits to subsys/win32k

Thomas Weidenmueller thomas at reactsoft.com
Fri Jul 9 12:24:59 CEST 2004


Mike Nordell wrote:

> Have you considered how this will affect SMP systems?

It won't affect SMP systems any different than the current 
implementation AFAIK. The only difference is that there are going to be 
thousands of locks less. I tested how often the user handle table is 
locked with our current implementation, anyhow 1000 locks for a single 
mouse move. And that doesn't include all the locks (e.g. locks to 
relative windows etc.).

> OK, maybe this global (per-winsta is in effect global, from a users POV)
> lock for user, but I'm confident something similar will not be 
> appropriate
> when it comes to GDI.
>  
>
I agree with you. That's why I'm not going to touch GDI at all. But our 
GDI for sure needs some optimization.

> I'd appreciate some elaboration on the considerations taken that led 
> to the
> conclusion this was the way to go.

See reasons above. Massive lockings all over the place and usage of 
handles in internal code.

> At first glance it seems this approach,
> paired with the unock/callback/lock idiom can create a few problems - 
> what
> if a thread on CPU0 is doing unluck(butterfingers, but I left it 
> misspelled
> since it became quite appropriate) in preparation to do a callback, 
> but then
> CPU1 gets the global lock and e.g. closes the window?
>  
>
I already considered this case. Therefore the object is referenced 
before releasing the lock. When it gets destroyed it's still in memory 
so we don't get into trouble when returning from the callback. After the 
callback the lock is acquired again and it is checked if the window 
and/or thread was destroyed. If so, further code needs special handling 
of course. But that's not solved well in our current implementation as 
well.

Regards

Thomas


More information about the Ros-kernel mailing list