RUMPCLIENT(3) | Library Functions Manual | RUMPCLIENT(3) |
rumpclient
—
#include <rump/rumpclient.h>
#include <rump/rump_syscalls.h>
int
rumpclient_init
();
pid_t
rumpclient_fork
();
pid_t
rumpclient_vfork
();
struct rumpclient_fork *
rumpclient_prefork
();
int
rumpclient_fork_init
(struct
rumpclient_fork *rfp);
void
rumpclient_fork_cancel
(struct
rumpclient_fork *rfp);
int
rumpclient_exec
(const
char *path, char *const
argv[], char *const
envp[]);
int
rumpclient_daemon
(int
nochdir, int
noclose);
void
rumpclient_setconnretry
(time_t
retrytime);
int
rumpclient_syscall
(int num,
const void *sysarg, size_t
argsize, register_t *retval);
rumpclient
is the clientside implementation of the
rump_sp(7) facility. It can be
used to connect to a rump kernel server and make system call style requests.
Every connection to a rump kernel server creates a new process
context in the rump kernel. By default a process is inherited from init, but
through existing connections and the forking facility offered by
rumpclient
it is possible to form process trees.
rumpclient_init
()rumpclient
. The server address is
determined from the environment variable
RUMP_SERVER
according to syntax described in
rump_sp(7). The new process
is registered to the rump kernel with the command name from
getprogname(3).rumpclient_fork
()rumpclient_vfork
()rumpclient_prefork
()NULL
cookie if successful.rumpclient_fork_init
(rfp)rumpclient_init
(), with the exception that it uses
the rfp context created by a call to
rumpclient_prefork
(). This is typically called
from the child of a fork(2)
call.rumpclient_fork_cancel
(rfp)rumpclient_exec
(path,
argv, envp)rumpclient
wrapper around
execve(2). The wrapper makes
sure that the rump kernel process context stays the same in the newly
executed program. This means that the rump kernel PID remains the same and
the same rump file descriptors are available (apart from ones which were
marked with FD_CLOEXEC
).
It should be noted that the newly executed program must call
rumpclient_init
() before any other rump kernel
communication can take place. The wrapper cannot do it because it no
longer has program control. However, since all rump clients call the
init routine, this should not be a problem.
rumpclient_daemon
(noclose,
nochdir)rumpclient_setconnretry
(retrytime)If retrytime is a positive integer, it
means the number of seconds for which reconnection will be attempted.
The value 0 means that reconnection will not be attempted, and all
subsequent operations will return the errno
ENOTCONN
.
Additionally, the following special values are accepted:
RUMPCLIENT_RETRYCONN_INFTIME
RUMPCLIENT_RETRYCONN_ONCE
EHOSTUNREACH
immediately or the TCP connection request timeouting are considered to
be one retry.RUMPCLIENT_RETRYCONN_DIE
rumpclient_syscall
(num,
sysarg, argsize,
retval)<rump/rump_syscalls.h>
(for example
rump_sys_read
(fd,
buf, nbytes)). This interface
allows calling the server with pre-marshalled arguments.Additionally, all of the supported rump system calls are available
through this library. See
<rump/rump_syscalls.h>
for a
list.
rumpclient
routines return -1 in case of error and set
errno. In case of success a non-negative integer is returned, where
applicable.
February 16, 2011 | NetBSD 9.2 |