networking guru question
Eric Norum
eric.norum at usask.ca
Thu Oct 17 15:25:58 UTC 2002
On Wednesday, October 16, 2002, at 11:21 PM, Till Straumann wrote:
> Hi Eric :-)
>
> I want to use soreceive() to avoid copying mbufs into a user buffer.
> I guess I have to hold the bsdnet_semaphore around soreceive().
> But once I got hold of the mbuf chain - is it safe to access / use /
> release
> it without holding the semaphore (well, maybe I need to hold it
> for freeing the chain)?
>
I take it that you're doing this to provide 'zero-copy' network
operation. Perhaps we should think about adding a more general API
for this (like the zero-copy I/O routines provided by pSOS+/pNA which
specify a callback function to be invoked when I/O is complete).
Anyhow, I think you should be safe if you:
obtain network semahore
soreceive()
release network semaphore
do something with the received data
obtain network semahore
free mbufs()
release network semaphore
BTW -- what's your application that needs this high a level of network
performance???
--
Eric Norum <eric.norum at usask.ca>
Department of Electrical Engineering
University of Saskatchewan
Saskatoon, Canada.
Phone: (306) 966-5394 FAX: (306) 966-5407
More information about the users
mailing list