Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
CONTEXT(3PVM)			 PVM Version 3.4		   CONTEXT(3PVM)

NAME
     pvm_newcontext,  pvm_setcontext,  pvm_freecontext, pvm_getcontext - Request
     new context, change context, free existing context, and  get  current  con-
     text, respectively.

SYNOPSIS
     C	  int ctx = pvm_newcontext( void )
	  int old_ctx = pvm_setcontext( int new_ctx )
	  int info = pvm_freecontext( ctx )
	  int ctx = pvm_getcontext( void )

     Fortran
	  call pvmfnewcontext( ctx )
	  call pvmfsetcontext( new_ctx, old_ctx )
	  call pvmffreecontext( ctx, info )
	  call pvmfgetcontext( ctx )

PARAMETERS
     ctx
	    Context value.

     new_ctx
	    New context value.

     old_ctx
	    Prior context value.

     info
	    Result code.

DESCRIPTION
     The context functions provide a system-wide unique context and the means to
     manipulate this context.

     Contexts  provide the ability for communicating tasks to automatically dif-
     ferentiate messages by the context in which they were sent.  Thus a message
     sent in context A by the sender must be received in context A by the recip-
     ient.  A sender may send in any context.  However, a recipient will not ac-
     cept a message sent in a context that differs from its own.

     One such use of contexts is with library routines.  Using contexts, library
     routine inter-communication may be logically seperated from the user's  ap-
     plication inter-communication. This will prevent the inadvertent receipt of
     one another's messages.

     Spawned tasks inherit the spawn-time context of their parent.  Existing PVM
     applications work unchanged using the default context.

     pvm_newcontext  returns  a newly allocated context.  However, this new con-
     text is not yet active.

     pvm_setcontext changes the current context from old_ctx to new_ctx.

     pvm_freecontext frees ctx so that it may be reused.  Contexts are a  system
     resource that will be exhausted if not recycled.

     pvm_getcontext returns the current context of the requesting task.

EXAMPLES
     /* parent task with context */
	  int cc, context0, context1;
	  char buf[25];

	  context0 = pvm_getcontext();	     /*  get my current context */
	  context1 = pvm_newcontext();	     /*  get a new context */
	  pvm_setcontext(context1);	     /*  set my context to new context */
	  printf("My context is: %d", context1);
	  pvm_spawn("child", (char**)0, PvmTaskDefault, "", 1, &tid);
	  cc = pvm_recv(-1, -1);	     /*  receive message from child - in context1 */
	  pvm_upkstr(buf);
	  printf("%s", buf);
	  pvm_setcontext(context0);	     /*  reset my context to my original context0 */

     /* child task with context - child inherits parent's context as default */
	  int context;
	  int ptid;
	  char buf[25];

	  ptid = pvm_parent();
	  context = pvm_getcontext();	     /*  get my current context */
	  sprintf(buf, "Greetings from child who's context is: %d.", context);
	  pvm_initsend(PvmDataDefault);
	  pvm_pkstr(buf);
	  pvm_send(ptid, 1);

ERRORS
     Only  system resource errors will be returned as the context programs them-
     selves do not generate errors.

SEE ALSO
				  8 April, 1997 		   CONTEXT(3PVM)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pvmffreecontext&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help