SETTMASK(3PVM) SETTMASK(3PVM)
NAME
pvm_gettmask, pvm_settmask - Get or set trace mask of a task or its chil-
dren.
SYNOPSIS
C #include <pvm3.h>
#include <pvmtev.h>
int info = pvm_gettmask( int who, Pvmtmask mask )
int info = pvm_settmask( int who, Pvmtmask mask )
Fortran Not Available
PARAMETERS
who Specifies which trace mask to get or set:
PvmTaskSelf The current task
PvmTaskChild Children tasks to be spawned
mask Trace mask (owned by caller), which is filled in with the current
trace vector on calling pvm_gettmask or used to set the current
trace vector on calling pvm_settmask.
info Status code returned. Values less than zero indicate an error.
DISCUSSION
Each task has a trace mask, which can be used to individually enable trac-
ing of each libpvm function. The mask is inherited from its parent task
(or initially all cleared if the task has no parent). When calls are made
to functions in libpvm, the parameters and results are sent in messages to
the trace sink of the task (variable PvmTraceTid set by calling pvm_setopt
- see man page).
The PVM console and XPVM use this system to get trace data from application
programs.
A task can get or set either its own trace mask, or the mask passed to
children it spawns. Note the mask must be set before the spawn call; set-
ting the child trace mask has no effect on already-running children.
The trace mask can be kept in a temporary variable, declared as:
Pvmtmask mymask;
Right now, this is a character array with approximately 80 bits.
There are four macros defined to manipulate trace masks. Along with the
functions, these allow a program to get the current trace mask, modify or
save it, and put it back:
TEV_INIT_MASK(mask)
TEV_SET_MASK(mask, kind)
TEV_UNSET_MASK(mask, kind)
TEV_CHECK_MASK(mask, kind)
TEV_INIT_MASK initializes a mask to all bits cleared and must be used to
initialize a trace mask (unless that is done by setting it from
pvm_gettmask). TEV_SET_MASK sets a bit in a mask. Bit values are defined
in . Likewise, TEV_UNSET_MASK clears a single bit and
TEV_CHECK_MASK checks to see if a bit is set, returning nonzero if true.
Note: Most events in the trace mask come in pairs, the first (ending in
...0) is generated on entry to a function and the second (...1) on exit.
The trace mask has only half as many bits as there are events; events are
enabled in pairs. In other words, if you select TEV_SEND0, you'll also get
TEV_SEND1.
The trace mask is deliberately kept as a printable (and null-terminated)
string, for two reasons. First, it is passed through the environment
between tasks, in the form:
PVMTMASK=@@AAOG@@NO@L@@@@@@@@
so the pvmd doesn't have to explicitly manage it. Second, the mask vari-
ables can be passed between tasks using pvm_pkstr() or otherwise manipu-
lated as strings.
pvm_gettmask and pvm_settmask return PvmOk on success, else a negative
value.
EXAMPLES
C:
#include <pvm3.h>
#include <pvmtev.h>
Pvmtmask m;
pvm_gettmask( PvmTaskChild, m );
TEV_SET_MASK(m, TEV_ADDHOSTS0 );
pvm_settmask( PvmTaskChild, m );
pvm_spawn( "worker", (char **)0, PvmTaskDefault, "", 1, (int *)0);
ERRORS
The following error condition can be returned by pvm_gettmask or
pvm_settmask:
PvmBadParam invalid value for who argument.
SEE ALSO
pvm(1PVM), pvm_getopt(3PVM), pvm_setopt(3PVM)
Back to the alphabetical listing
Back to the listing of routines
for advanced and group functions