| 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_INFTIMERUMPCLIENT_RETRYCONN_ONCEEHOSTUNREACH
          immediately or the TCP connection request timeouting are considered to
          be one retry.RUMPCLIENT_RETRYCONN_DIErumpclient_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.4 |