From: kevin lyda (kevin at domain suberic.net)
Date: Tue 20 Apr 1999 - 11:16:03 IST
Harry Moreau burst across the net:
>On Mon, 19 Apr 1999, kevin lyda wrote:
>select() is probably your only option. Using signals is indeed a bad
>idea, because you can't control the exact point at which your read()
>gets interrupted by the timeout.
that's what i'm thinking. but there are performance issues to consider.
>>also, i'm looking for this for efficiency reasons. if i did it
>>with a select and then a read it will involve more data copying
>>under linux, yes?
>I don't think so. select() doesn't actually read data.
exactly, that's why there's more data copying. if data is coming in to
a nic, and the driver is notified that a process is waiting to read data
(with a memory location), then the data can go straight from the card
to the memory location (via dma if supported). otherwise the data gets
copied into buffers in the driver, and then again into userspace.
supposedly nt is capable of this. true? also, does any other unix
system do this?
>select() is available on most modern UNIX systems. However,
>you may find slight differences in implementation, especially in error
>conditions. Read the man pages carefully.
ACE can mask this, but select has a (supposed) penalty under nt.
theoretically there would also be a loss of performance under linux if
linux can xfer straight from nic to userspace.
kevin
This archive was generated by hypermail 2.1.6 : Thu 06 Feb 2003 - 13:04:08 GMT