xref: /minix/minix/lib/libsys/vm_memctl.c (revision 0a6a1f1d)
1 #include "syslib.h"
2 #include <unistd.h>
3 #include <string.h>
4 
5 int
6 vm_memctl(endpoint_t ep, int req, void** addr, size_t *len)
7 {
8 	message m;
9 	int r;
10 
11 	memset(&m, 0, sizeof(m));
12 	m.VM_RS_CTL_ENDPT = ep;
13 	m.VM_RS_CTL_REQ = req;
14 	m.VM_RS_CTL_ADDR = addr ? *addr : 0;
15 	m.VM_RS_CTL_LEN = len ? *len : 0;
16 
17 	r = _taskcall(VM_PROC_NR, VM_RS_MEMCTL, &m);
18 	if(r != OK) {
19 		return r;
20 	}
21 	if(addr) {
22 		*addr = m.VM_RS_CTL_ADDR;
23 	}
24 	if(len) {
25 		*len = m.VM_RS_CTL_LEN;
26 	}
27 
28 	return OK;
29 }
30