I'm trying to understand the functionality of the vmsplice(2)
syscall (man page here). I have two questions about the effect of the SPLICE_F_GIFT
flag:
The man page says that once you gift pages to the kernel, you must never modify the memory again. Does that mean the memory is pinned forever, or does it perhaps refer to virtual memory that can be unmapped by the gifting process, rather than physical memory? In other words, what does a typical use of this look like?
If I don't set
SPLICE_F_GIFT
, isvmsplice(2)
any different than a vectorized write syscall likewritev(2)
?