REG_HOSTER(3PVM)					     REG_HOSTER(3PVM)

NAME
  pvm_reg_hoster - Register task as PVM	slave starter.

SYNOPSIS
  C	  #include <pvmsdpro.h>

	  int cc = pvm_reg_hoster()

  Fortran Not Available

DISCUSSION

  Registers the	calling	task as	a PVM slave pvmd starter.  When	the master
  pvmd receives	a DM_ADD message, instead of starting the new slave pvmd
  processes itself, it passes a	message	to the hoster, which does the dirty
  work and sends a message back	to the pvmd.

  Note:	 This function isn't for beginners.  If	you don't grok what it does,
  you probably don't need it.  For a more complete explanation of what's
  going	on here, you should refer to the PVM source code and/or	user guide
  section on implementation; this is just a man	page.  That said...

  When the master pvmd receives	a DM_ADD message (request to add hosts to the
  virtual machine), it looks up	the new	host IP	addresses, gets	parameters
  from the host	file if	it was started with one, and sets default parameters.
  It then either attempts to start the processes (using	rsh or rexec())	or,
  if a hoster has registered, sends it a SM_STHOST message.

  The format of	the SM_STHOST message is:
      int nhosts		// number of hosts
      {
	  int tid		// of host
	  string options	// from	hostfile so= field
	  string login		// in form ``[username@]hostname.domain''
	  string command	// to run on remote host
      }	[nhosts]

  The hoster should attempt to run each	command	on each	host and record	the
  result.  A command usually looks like:
      $PVM_ROOT/lib/pvmd -s -d8	-nhonk 1 80a9ca95:0f5a 4096 3 80a95c43:0000

  and a	reply from a slave pvmd	like:
      ddpro<2312> arch ip<80a95c43:0b3f>	mtu<4096>

  When finished, the hoster should send	a SM_STHOSTACK message back to the
  address of the sender	(the master pvmd).  The	format of the reply message
  is:

      {
	  int tid		// of host, must match request
	  string status		// result line from slave or error code
      }	[]			// implied count

  The TIDs in the reply	must match those in the	request.  They may be in a
  different order, however.

  The result string should contain the entire reply (a single line) from each
  new slave pvmd, or an	error code if something	went wrong.  Legal error
  codes	are the	literal	names of the pvm_errno codes, for example
  ``PvmCantStart''.  The default PVM hoster can	return PvmDSysErr or
  PvmCantStart,	and the	slave pvmd itself can return PvmDupHost.

  The hoster must use pvm_setmwid() to set the wait ID in the reply message
  to the same value as in the request.	The wait ID in the request is
  obtained by calling pvm_getmwid().

  The hoster task must use pvm_setopt(PvmResvTids, 1) to allow sending
  reserved messages.  Messages must be packed using data format	PvmDataFoo.

  pvm_reg_hoster() returns PvmOk when successful.

SEE ALSO
  pvm_addhosts(3PVM), pvm_config(3PVM),	pvm_setmwid(3PVM)


Back to the alphabetical listing
Back to the listing of routines for advanced and group functions