![]() | |||||||||||||
Messages in this thread |
On Thu, 18 Mar 2004, Andrew Morton wrote: > Armin Schindler <armin@melware.de> wrote: > > > > Hi all, > > > > the ISDN kernelcapi function recv_handler() is triggered by > > schedule_work() and dispatches the CAPI messages to the applications. > > > > Since a workqueue function may run on another CPU at the same time, > > reordering of CAPI messages may occur. > > TCP has the same problem. > > > For serialization I suggest a mutex semaphore in recv_handler(), > > patch is appended (yet untested). > > It will work OK. It isn't very scalable of course, but I assume you're > dealing with relatively low bandwidths. Right, compared with network, I guess it is low bandwith. > I would suggest that you look at avoiding the global semaphore. Suppose > someone has 64 interfaces or something. Is that possible? It might be > better to put the semaphore into struct capi_ctr so you can at least > process frames from separate cards in parallel. This was just mentioned on the i4l-developer list too. But not on capi_ctr basis, a semaphore per application (struct capi20_appl) should be better. The reason for the serialization is a possible re-ordering of messages per application, so only the application needs the semaphore. Thanks Andrew, I will prepare a new patch. Armin - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ | ||||||||||||
| Last update: 2005-03-22 13:01 [W:0.073 / U:0.260 seconds] ©2003-2008 Jasper Spaans | |||||||||||||