@@@ man wip
[mLib] / test / tvec-remote.3
diff --git a/test/tvec-remote.3 b/test/tvec-remote.3
new file mode 100644 (file)
index 0000000..d7ae260
--- /dev/null
@@ -0,0 +1,109 @@
+.\" -*-nroff-*-
+.de VS
+.sp 1
+.RS
+.nf
+.ft B
+..
+.de VE
+.ft R
+.fi
+.RE
+.sp 1
+..
+.de hP
+.IP
+.ft B
+\h'-\w'\\$1\ 'u'\\$1\ \c
+.ft P
+..
+.ie t \{\
+.  ds o \(bu
+.  de VP
+.    sp .4v
+..
+\}
+.el \{\
+.  ds o o
+.  de VP
+.    sp
+..
+\}
+..
+.TH tvec-remote 3 "11 March 2024" "Straylight/Edgeware" "mLib utilities library"
+.SH NAME
+tvec-remote \- test vector framework remote invocation
+.\" @TVEC_REMOTEENV
+.\" @TVEC_FORK
+.\" @TVEC_EXEC
+.\" @tvec_fork
+.\" @tvec_exec
+.
+.\" @tvec_setprogress
+.\" @tvec_setprogress_v
+.
+.\" @tvec_remoteserver
+.
+.SH SYNOPSIS
+.nf
+.B "#include <mLib/tvec.h>"
+.PP
+.ta \w'\fBtypedef int tvec_connectfn('u
+.BI "typedef int tvec_connectfn(pid_t *" kid_out ", int *" infd_out ,
+.BI "  int *" outfd_out ", int *" errfd_out ,
+.BI "  struct tvec_state *" tv ,
+.BI "  const struct tvec_remoteenv *" env );
+.PP
+.ta 2n
+.B "struct tvec_remoteenv_slots {"
+.B "   tvec_connectfn *connect;"
+.B "   const struct tvec_env *env;"
+.B "   unsigned dflt_reconn;"
+.B "};"
+.B "struct tvec_remoteenv {"
+.B "   struct tvec_env _env;"
+.B "   struct tvec_remoteenv_slots r;"
+.B "};"
+.B "#define TVEC_REMOTEENV ..."
+.PP
+.B "#define TVXF_VALMASK ..."
+.B "#define TVXF_SIG ..."
+.B "#define TVXF_CAUSEMASK ..."
+.B "#define TVXST_RUN ..."
+.B "#define TVXST_EXIT ..."
+.B "#define TVXST_KILL ..."
+.B "#define TVXST_CONT ..."
+.B "#define TVXST_STOP ..."
+.B "#define TVXST_DISCONN ..."
+.B "#define TVXST_UNK ..."
+.B "#define TVXST_ERR ..."
+.PP
+.B "struct tvec_remotefork_slots {"
+.B "   const struct tvec_test *tests;"
+.B "};"
+.B "struct tvec_remotefork {"
+.B "   struct tvec_env _env;"
+.B "   struct tvec_remoteenv_slots r;"
+.B "   struct tvec_remotefork_slots f;"
+.B "};"
+.B "tvec_connectfn tvec_fork;"
+.BI "#define TVEC_REMOTEFORK(" subenv ", " tests ") ..."
+.PP
+.B "struct tvec_remoteexec_slots {"
+.B "   const char *const *args;"
+.B "};"
+.B "struct tvec_remoteexec {"
+.B "   struct tvec_env _env;"
+.B "   struct tvec_remoteenv_slots r;"
+.B "   struct tvec_remoteexec_slots x;"
+.B "};"
+.B "tvec_connectfn tvec_exec;"
+.BI "#define TVEC_REMOTEEXEC(" subenv ", " args ") ..."
+.PP
+.BI "void tvec_setprogress(const char *" status ", ...);"
+.BI "void tvec_setprogress_v(const char *" status ", va_list *" ap );
+.PP
+.ta \w'\fBint tvec_remoteserver('u
+.BI "int tvec_remoteserver(int " infd ", int " outfd ,
+.BI "  const struct tvec_config *" config );
+.fi