Hello,
> This approach also means that there is no need to make a public method
> for the device driver to invoke on the manager (the manager will invoke
> a method on the device to push the frame). There is still locking
> required on the manager and connection. However this can be made
> fairly granular to avoid cross device blocking using the following
> approach:
> take lock on the manager
> take the lock on the connection/device,
> release the manager lock
> invoke the frame push to the driver
> take lock on the manager
> release the lock on the connection/device,
> release the manager lock
I thought about solution, similar to Jaroslav suggested:
take lock on the manager
take the lock on the connection/device,
release the manager lock
invoke the frame push to the driver
release the lock on the connection/device,
I think it would be enough for dispatching requests to different
connections, but we should enforce all methods, operating on
connections to take lock on them.
The other thought is to give up on this fine grained blocking at all.
I think all operations on audio device could be done in non-blocking way,
so it is safe to made them inside global lock. But this approach does
not scale well to multi-processor systems. Should we really bother about
this now?
--
Regards,
Alexander Chemeris.
SIPez LLC.
SIP VoIP, IM and Presence Consulting
http://www.SIPez.com
tel: +1 (617) 273-4000
_______________________________________________
sipxtapi-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipxtapi-dev/