sys_vinl.c \
sys_vinw.c \
sys_vircopy.c \
- sys_vm_setbuf.c \
sys_vmctl.c \
sys_voutb.c \
sys_voutl.c \
ds.c \
vm_allocmem.c \
vm_brk.c \
+ vm_ctl.c \
vm_exec_newmem.c \
vm_exit.c \
+ vm_notify_sig.c \
vm_fork.c \
vm_map_phys.c \
vm_umap.c \
if(flags & AC_LOWER16M)
mmapflags |= MAP_LOWER16M;
+ if(flags & AC_LOWER1M)
+ mmapflags |= MAP_LOWER1M;
if(flags & AC_ALIGN64K)
mmapflags |= MAP_ALIGN64K;
#include "syslib.h"
-PUBLIC int sys_fork(parent, child, child_endpoint, map_ptr, flags)
+PUBLIC int sys_fork(parent, child, child_endpoint, map_ptr, flags, msgaddr)
endpoint_t parent; /* process doing the fork */
endpoint_t child; /* which proc has been created by the fork */
int *child_endpoint;
struct mem_map *map_ptr;
u32_t flags;
+vir_bytes *msgaddr;
{
/* A process has forked. Tell the kernel. */
m.PR_FORK_FLAGS = flags;
r = _taskcall(SYSTASK, SYS_FORK, &m);
*child_endpoint = m.PR_ENDPT;
+ *msgaddr = m.PR_FORK_MSGADDR;
return r;
}
+++ /dev/null
-#include "syslib.h"
-
-/*===========================================================================*
- * sys_vm_setbuf *
- *===========================================================================*/
-PUBLIC int sys_vm_setbuf(base, size, high)
-phys_bytes base;
-phys_bytes size;
-phys_bytes high;
-{
- message m;
- int result;
-
- m.m4_l1= base;
- m.m4_l2= size;
- m.m4_l3= high;
-
- result = _taskcall(SYSTASK, SYS_VM_SETBUF, &m);
- return(result);
-}
-
}
PUBLIC int sys_vmctl_get_memreq(endpoint_t *who, vir_bytes *mem,
- vir_bytes *len, int *wrflag)
+ vir_bytes *len, int *wrflag, endpoint_t *requestor)
{
message m;
int r;
*mem = (vir_bytes) m.SVMCTL_MRG_ADDR;
*len = m.SVMCTL_MRG_LEN;
*wrflag = m.SVMCTL_MRG_WRITE;
+ *requestor = (endpoint_t) m.SVMCTL_MRG_REQUESTOR;
}
return r;
}
+PUBLIC int sys_vmctl_enable_paging(struct mem_map *map)
+{
+ message m;
+ m.SVMCTL_WHO = SELF;
+ m.SVMCTL_PARAM = VMCTL_ENABLE_PAGING;
+ m.SVMCTL_VALUE = (int) map;
+ return _taskcall(SYSTASK, SYS_VMCTL, &m);
+}
--- /dev/null
+
+#include "syslib.h"
+
+#include <minix/vm.h>
+
+/*===========================================================================*
+ * vm_umap *
+ *===========================================================================*/
+PUBLIC int vm_ctl(int what, int param)
+{
+ message m;
+ int result;
+
+ m.VCTL_WHAT = what;
+ m.VCTL_PARAM = param;
+ return _taskcall(VM_PROC_NR, VM_CTL, &m);
+}
+
--- /dev/null
+
+#include "syslib.h"
+
+#include <minix/vm.h>
+
+/*===========================================================================*
+ * vm_notify_sig *
+ *===========================================================================*/
+PUBLIC int vm_notify_sig(endpoint_t ep, endpoint_t ipc_ep)
+{
+ message m;
+ int result;
+
+ m.VM_NOTIFY_SIG_ENDPOINT = ep;
+ m.VM_NOTIFY_SIG_IPC = ipc_ep;
+
+ result = _taskcall(VM_PROC_NR, VM_NOTIFY_SIG, &m);
+ return(result);
+}
+