Flashnux

GNU/Linux man pages

Livre :
Expressions régulières,
Syntaxe et mise en oeuvre :

ISBN : 978-2-7460-9712-4
EAN : 9782746097124
(Editions ENI)

GNU/Linux

CentOS 2.1AS

(Slurm)

pvmfgetcontext(3)


CONTEXT

CONTEXT

NAME
SYNOPSIS
PARAMETERS
DESCRIPTION
EXAMPLES
ERRORS
SEE ALSO

NAME

pvm_newcontext − Request new context.
pvm_setcontext − Change context.
pvm_freecontext − Free existing context.
pvm_getcontext − Get current context.

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 differentiate 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 recipient. A sender may send in any context. However, a recipient will not accept 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 application 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 context 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 themselves do not generate errors.

SEE ALSO



pvmfgetcontext(3)