Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

pvm_getfds(3pvm) [debian man page]

GETFDS(3PVM)							  PVM Version 3.4						      GETFDS(3PVM)

NAME
pvm_getfds - Get file descriptors in use by PVM. SYNOPSIS
C int nfds = pvm_getfds( int **fds ) Fortran Not Available PARAMETERS
fds Returns integer array of file descriptors. DESCRIPTION
A PVM task uses sockets to communicate between libpvm and other tasks or the pvmd. It is sometimes useful to know the file descriptor num- bers of the sockets in order to wait from input from either PVM messages or an external source. For example, the PVM console waits on both keyboard input and notify messages. Input can be multiplexed by polling all sources, but this wastes cpu cycles. Instead, the select() system call can be used to wait until one or more sources of input are ready. If it completes successfully, pvm_getfds returns the number of sockets in use, and the file descriptor numbers in an array (allocated and freed by libpvm). At least one socket always exists (from task to pvmd), and its descriptor is always fds[0]. The number of sockets varies as direct routes are established to other tasks. It can be difficult to track the set of file descriptors if direct routing is enabled, because routes are created as messages are either sent or received. The simplest approach is to disable direct routing. When select returns with a PVM file descriptor ready, a complete message may be ready to be received, or instead only a fragment may be waiting. pvm_nrecv or pvm_probe should be used test without blocking. RESTRICTIONS
pvm_getfds is only available when running PVM on a Unix or similar system. EXAMPLES
The following program fragment waits until either keyboard input is available, or a PVM message has arrived. int *d; fd_set r; pvm_setopt(PvmRoute, PvmDontRoute); pvm_getfds(&d); FD_ZERO(&r); FD_SET(0, &r); FD_SET(d[0], &r); while(1) { if (select(d[0] + 1, &r, (fd_set*)0, (fd_set*)0, (struct timeval*)0) > 0) { if (FD_ISSET(0, &r)) ... /* read keyboard input */ if (FD_ISSET(d[0], &r) && pvm_nrecv(-1, -1) > 0) ... /* got a PVM message */ } } ERRORS
The following error condition can be returned by pvm_getfds: PvmSysErr pvmd not responding. SEE ALSO
pvm_notify(3PVM), pvm_trecv(3PVM) 22 Nov, 1994 GETFDS(3PVM)

Check Out this Related Man Page

REG_RM(3PVM)							  PVM Version 3.4						      REG_RM(3PVM)

NAME
pvm_reg_rm - Register task as PVM resource manager. SYNOPSIS
C #include <pvmsdpro.h> int cc = pvm_reg_rm( struct pvmhostinfo **hip ) struct pvmhostinfo { int hi_tid; char *hi_name; char *hi_arch; int hi_speed; }; Fortran Not Available PARAMETERS
hostp Returns pointer to a pvmhostinfo structure which contains information about the master host. DESCRIPTION
Registers the calling task as a PVM task and slave host manager. This means it intercepts certain libpvm calls from other tasks in order to have a say in scheduling policy. The resource manager will asynchronously receive messages from tasks containing requests for service, as well as messages from pvmds notifying it of system failures. Before you start using this function, be warned that it's not a trivial thing, i.e. you can't just call it to turn off the default round- robin task assignment. Rather, it allows you to write your own resource manager and hook it to PVM. To understand what the following messages mean, you should refer to the PVM source code and/or user guide section on implementation; There's just too much to say about them. When one of the following libpvm functions is called in a task with resource manager set, the given message tag is sent to to resource man- ager. Libpvm call RM message Normal message pvm_addhosts() SM_ADDHOST TM_ADDHOST pvm_config() SM_CONFIG TM_CONFIG pvm_delhosts() SM_DELHOST TM_DELHOST pvm_notify() SM_NOTIFY TM_NOTIFY pvm_spawn() SM_SPAWN TM_SPAWN pvm_tasks() SM_TASK TM_TASK pvm_reg_rm() SM_SCHED TM_SCHED The resource manager must in turn compose the following messages and send them to the pvmds: RM message Normal message SM_EXEC DM_EXEC SM_EXECACK DM_EXECACK SM_ADD DM_ADD SM_ADDACK DM_ADDACK SM_HANDOFF (none - change of resource manager) The following messages are sent asynchronously to the resource manager by the system: RM message Meaning SM_TASKX notify of task exit/fail SM_HOSTX notify of host delete/fail The resource manager task must use pvm_setopt(PvmResvTids, 1) to allow sending reserved messages. Messages should be packed using encoding PvmDataDefault to ensure they can be unpacked anywhere in the system. pvm_reg_rm() returns PvmOk when successful. SEE ALSO
pvm_addhosts(3PVM), pvm_config(3PVM), pvm_delhosts(3PVM), pvm_notify(3PVM), pvm_spawn(3PVM), pvm_tasks(3PVM) 4 March, 1994 REG_RM(3PVM)
Man Page