mh at codeweavers.com
Mon Oct 18 08:57:27 CDT 2004
>> - storing context in server while entering USR1 signal handler (to be
>> done without races, which will require some more work, as the server
>> doesn't synchronize with the USR1 handler)
I've implemented this in my local tree, and it works fine: Easy CD-DA
gets further now. It is still being nailed by the copy protection system
(called "Armadillo" apparently) but the splash screen appears now :)
Today the BT engineer reconnected our line. So, now I just have to wait
for ADSL to be activated, then I can flush my patch queue and get back
to some real work.
To eliminate the race at the top of SIGUSR1 handler I made server
get_thread_context/set_thread_context RPCs fail with STATUS_RETRY if the
context has not yet been uploaded, and adjusted the ntdll code to spin
in a loop yielding the timeslice whenever it receives STATUS_RETRY. It's
not fancy but it works, and on average only 1 yield is needed (obvious
in hindsight I guess).
The SIGCONTEXT is reloaded when the context override is cancelled, so
set_thread_context on a suspended thread works as expected.
More information about the wine-devel