On Thu 16-05-19 15:30:34, Michal Hocko wrote:
[You are defining a new user visible API, please always add linux-api
mailing list - now done]
On Wed 15-05-19 18:11:15, Kirill Tkhai wrote:
[...]
quoted
The proposed syscall aims to introduce an interface, which
supplements currently existing process_vm_writev() and
process_vm_readv(), and allows to solve the problem with
anonymous memory transfer. The above example may be rewritten as:
void *buf;
buf = mmap(NULL, n * PAGE_SIZE, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_ANONYMOUS, ...);
recv(sock, buf, n * PAGE_SIZE, 0);
/* Sign of @pid is direction: "from @pid task to current" or vice versa. */
process_vm_mmap(-pid, buf, n * PAGE_SIZE, remote_addr, PVMMAP_FIXED);
munmap(buf, n * PAGE_SIZE);
AFAIU this means that you actually want to do an mmap of an anonymous
memory with a COW semantic to the remote process right? How does the
remote process find out where and what has been mmaped? What if the
range collides? This sounds quite scary to me TBH. Why cannot you simply
use shared memory for that?
--
Michal Hocko
SUSE Labs