From: Michael R. <mr...@us...> - 2004-02-04 21:27:07
|
Hi Miguel, > ok, i looked over your patches (but did not tested them). > > - getting rid of AO_PROP_PAUSE: great! we should remove redundant > state or variables like that as it make xine programming less error > prone. I hope this does not create any new problems. Have you seen anything suspicious? > - ticket system: i think i understood the general concept and usage, > but not all the details behind it (specially the irrevocable cases). Any specific questions? Should I try to explain some details more clearly? > besides, i never saw an implementation for a system like that before, Me not either. > i don't know if it is somewhat possible to verify the correctness of > the algorithm. A formal proof would at least be very difficult, if not impossible. > btw, something that occurred me, i don't know if it > makes sense: > > 1) somebody call revoke(). the function is guaranteed to return > with no tickets granted/acquired. > 2) another thread call acquire() before ticket being issued again. > it seems that acquire would not block since ticket_revoked==0. (?) That's true, because during a rewire, you will first revoke the ticket and then call port functions like close() and open(), which should not block, if acquiring a ticket for whatever reason. You are right that this leads to problems if the frontend calls functions with port access and rewiring stuff concurrently. Any way around this? I think storing the current thread on revocation in the ticket and then blocking all threads but this current one on acquire should work. Michael -- panic("floppy: Port bolixed."); 2.2.16 /usr/src/linux/include/asm-sparc/floppy.h |