psend man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

PSEND(2)		      LAM NETWORK LIBRARY		      PSEND(2)

NAME
       psend,  precv,  psendopen,  precvopen,  psendclose,  precvclose	-  LAM
       physical layer message passing (virtual circuits)

C SYNOPSIS
       #include <net.h>

       int psend (struct nmsg *header);
       int precv (struct nmsg *header);
       int psendopen (struct nmsg *header);
       int precvopen (struct nmsg *header);
       int psendclose (struct nmsg *header);
       int precvclose (struct nmsg *header);

FORTRAN SYNOPSIS
       subroutine PSND (pnode, pevent, ptype, plength, pflags, pdata,  pdsize,
	      pmsg, ierror)
subroutine PSNDO (pnode, pevent, ptype, ierror)
subroutine PSNDC (pnode, pevent, ptype, ierror)

subroutine PRCV (pevent, ptype, plength, pflags, pdata, pdsize, pmsg, ierror)
subroutine PRCVO (pevent, ptype, ierror)
subroutine PRCVC (pevent, ptype, ierror)

integer pnode, pevent, ptype, plength, pflags, pdata(*), pdsize, ierror
<type> pmsg(*)

DESCRIPTION
       These  functions use physical connections to establish LAM virtual cir‐
       cuits.  A user can establish a virtual circuit, pass  messages  on  it,
       and  dismantle  it when no longer needed.  Virtual circuits provide the
       fastest LAM point-to-point communication speeds, bypassing the LAM dae‐
       mon,  transferring  the	messages using the underlying physical connec‐
       tions.  All of these functions accept a pointer to  a  network  message
       descriptor (see nsend(2)).

       The  psendopen()	 and the precvopen() functions are used, by the sender
       and receiver respectively, to establish a point-to-point	 virtual  cir‐
       cuit between them.  To establish a virtual circuit, the sender sets the
       nh_node field of the message descriptor to the receiver's  nodeid,  and
       the  nh_event and nh_type fields to specify the synchronization just as
       in regular message  passing  (see  nsend(2)).   These  fields  are  not
       changed	after  a  call	to  psendopen().   On  the  receiver side, the
       nh_event and nh_type fields have to be set in order for synchronization
       to  take place.	After a call to precvopen(), the nh_event field is un‐
       changed but the nh_type field is set to the sender's nh_type  field  in
       order  to  fully	 specify the correct virtual circuit created.  Calling
       psendopen() and precvopen() causes the sender and the receiver to block
       until synchronization takes place and a virtual circuit is created.

       After successful calls to psendopen() and precvopen() a virtual circuit
       is established and will be used to quickly transfer  messages  whenever
       the  sender calls psend() and the receiver calls precv() on the nodeid,
       event, and type specified during its creation.  psend() and precv() are
       otherwise  used	to transfer messages just as nsend() and nrecv() would
       be, and any mismatch in the message length is handled in a similar man‐
       ner  (see nsend(2)).  Likewise, the data conversion flags can be set by
       the sender in order for LAM to  change  the  contents  of  nh_data  and
       nh_msg to the proper local byte order at the receiver.  Calling psend()
       and precv() causes the sender and receiver to block until  the  message
       exchange is completed.

       Since  virtual  circuits	 use resources, it is preferable to close them
       when they are no longer needed.	The sender closes a virtual circuit by
       calling the psendclose() function, specifying the node, event, and type
       of that virtual circuit.	 The receiver  closes  a  virtual  circuit  by
       calling	the  precvclose() functions, specifying the event and the type
       as returned by the precvopen() function.	 The psendclose()  and	precv‐
       close()	functions  cause no synchronization to take place and are non-
       blocking.  They simply free the resources used to  create  the  virtual
       circuit.

EXAMPLE USAGE
       This  is	 an example code showing how a virtual circuit is used to send
       an array of 4-byte floating point numbers from node n1 to node n0,  us‐
       ing  event  6 and type 0.  Error codes are not checked in order to keep
       the code simple.

       The sender on node n1 executes the following code:

       float4	      data[5];
       struct nmsg    header;

       header.nh_node = 0;
       header.nh_event = 6;
       header.nh_type = 0;

       psendopen(&header);

       header.nh_msg = (char *) data;
       header.nh_length = 5 * sizeof(float4);
       header.nh_flags = DFLT4MSG;

       psend(&header);

       psendclose(&header);

       The receiving process on node n0, not knowing how many  floating	 point
       numbers are going to be sent, sets a maximum limit of 20.  precv() mod‐
       ifies the value of nh_length in the header to indicate  the  length  of
       the  received message, i.e. four times the number of numbers sent.  The
       receiver executes the following code:

       float4	      indata[20];
       int4	      num;
       struct nmsg    header;

       header.nh_event = 6;
       header.nh_type = 0;

       precvopen(&header);

       header.nh_msg = (char *) indata;
       header.nh_length = 20 * sizeof(float4);
       header.nh_flags = DFLT4MSG;

       precv(&header);

       num = header.nh_length / 4;

       precvclose(&header);

ERRORS
       EFULL	       The virtual circuit table is full.

       EINVAL	       The  virtual  circuit  is  invalid.   If	 returned   by
		       psendopen()  or precvopen() this means the virtual cir‐
		       cuit is already open.  Otherwise it means  the  virtual
		       circuit does not exist.

LIMITATIONS
       In  the	current	 implementation, the sender and receiver have to be on
       different nodes.	 The factory default size of the virtual circuit table
       is 67.

SEE ALSO
       nsend(2)

LAM 7.1.2			  March, 2006			      PSEND(2)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net