Messages in this thread | | | Subject | Re: Make pipe data structure be a circular list of pages, rather | From | Alan Cox <> | Date | Sat, 08 Jan 2005 21:47:05 +0000 |
| |
On Sad, 2005-01-08 at 18:41, Linus Torvalds wrote: > For all of those that are valid (certainly the signal case), you need to > put the pipe into nonblocking mode anyway, so I don't think coalescing is > really needed. SuS certainly does _not_ seem guarantee that you can do > many nonblocking writes (small _or_ big). Let's see if somebody reports > any trouble with the new world order.
It breaks netscape 3 if I simulate it (but thats picking an app I know makes silly assumptions).
>From the rules pasted below I think the 1 byte at a time 4K write is guaranteed or at least strongly implied. The single write atomicity is guaranteed but that is if anything made easier by the changes.
(From pathconf)
fpathconf(_PC_PATH_BUF)
returns the size of the pipe buffer, where filedes must refer to a pipe or FIFO and path must refer to a FIFO. The corre- sponding macro is _POSIX_PIPE_BUF.
(From pwrite)
Write requests of {PIPE_BUF} bytes or less shall not be interleaved with data from other processes doing writes on the same pipe. Writes of greater than {PIPE_BUF} bytes may have data interleaved, on arbitrary boundaries, with writes by other processes, whether or not the O_NONBLOCK flag of the file status flags is set.
[of O_NDELAY for pipe] A write request for {PIPE_BUF} or fewer bytes shall have the following effect: if there is sufficient space available in the pipe, write() shall transfer all the data and return the number of bytes requested. Otherwise, write() shall transfer no data and return -1 with errno set to [EAGAIN].
- 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/
| |