I know with a splice, we can all stay in the kernel. But I am not sure whether it is the data or the whereabouts info that get passed to the pipe.
EDIT 1: Thanks @vinayak, now I know there is actually data copy to and from the pipe buffer. But then, I just wonder why we can not just pass whereabouts and length info to the pipe?
- Within a single process, the address space is the same
- Between difference processes, it also works if the pipe buffer is linear mapped. If not, we may use the DMA address.
refer here