---
name: "pvm_reg_tasker"
section: "3"
platform: "linux"
package: "pvm-dev"
version: "3.4.2-8"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/pvm_reg_tasker"
---

# pvm\_reg\_tasker(3)

Register task as PVM task starter.

## NAME

pvm\_reg\_tasker - Register task as PVM task starter.

## SYNOPSIS

```
C	#include <pvmsdpro.h>
	int cc = pvm_reg_tasker()
Fortran	Not Available
```

## DESCRIPTION

**Registers the calling task as a PVM task starter.** **When a tasker is registered with a pvmd,** **and the pvmd receives a DM\_EXEC message,** **instead of fork()ing and exec()ing the task itself,** **it passes a message to the tasker,** **which does the dirty work and sends a message back to the pvmd.**

**Note:  If this doesn't make sense,** **don't worry about it.** **This function is for folks who are writing stuff like debugger servers** **and so on.** **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 only a man page.** **That said...**

**When the pvmd receives a** *DM\_EXEC* message (request to exec new tasks), it searches *epath* (the PVM executable search path) for the file name. If it finds the file, it then either attempts to start the processes (using *fork()* and *exec()*) or, if a tasker has registered, sends it a *SM\_STTASK* message.

The format of the SM\_STTASK message is:

```
	int tid	// of task
	int flags	// as passed to spawn()
	string path	// absolute path of the executable
	int argc	// number of args to process
	string argv[argc]	// args
	int nenv	// number of envars to pass to task
	string env[nenv]	// environment strings
```

The tasker must attempt to start the process when it gets one of these messages. The tasker doesn't reply to the pvmd if the task is successfully started; the task will reconnect to the pvmd on its own, using the cookie in envar *PVMEPID* to identify itself to the pvmd.

The tasker must send a *SM\_TASKX* message to the pvmd when any task that it owns (has started) exits, or if it can't start a particular task. The format of the SM\_TASKX message is:

```
	int tid	// of task
	int status	// the Unix exit status (from wait())
	int u_sec	// user time used by the task, seconds
	int u_usec	// microseconds
	int s_sec	// system time used by the task, seconds
	int s_usec	// microseconds
```

The tasker 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\_tasker() returns PvmOk when successful.

## SEE ALSO

pvm\_spawn(3PVM), pvm\_tasks(3PVM),
