xref: /minix3/minix/lib/libsys/sys_fork.c (revision 433d6423c39e34ec4b79c950597bb2d236f886be)
1  #include "syslib.h"
2  
sys_fork(parent,child,child_endpoint,flags,msgaddr)3  int sys_fork(parent, child, child_endpoint, flags, msgaddr)
4  endpoint_t parent;		/* process doing the fork */
5  endpoint_t child;		/* which proc has been created by the fork */
6  endpoint_t *child_endpoint;
7  u32_t flags;
8  vir_bytes *msgaddr;
9  {
10  /* A process has forked.  Tell the kernel. */
11  
12    message m;
13    int r;
14  
15    m.m_lsys_krn_sys_fork.endpt = parent;
16    m.m_lsys_krn_sys_fork.slot = child;
17    m.m_lsys_krn_sys_fork.flags = flags;
18    r = _kernel_call(SYS_FORK, &m);
19    *child_endpoint = m.m_krn_lsys_sys_fork.endpt;
20    *msgaddr = m.m_krn_lsys_sys_fork.msgaddr;
21    return r;
22  }
23