Control messages are sent to a task like regular messages, but have tags in a reserved space (between TC_FIRST and TC_LAST). Normally, when a task downloads a message, it queues it for receipt by the program. Control messages are instead passed to pvmmctl() and then discarded. Like the entry points in the pvmd, pvmmctl() is an entry point in the task, causing it to take some asynchronous action. The main difference is that control messages can't be used to get the task's attention, since it must be in mxfer(), sending or receiving, in order to get them.
The following control message tags are defined. The first three are used by the direct routing mechanism (discussed in Section ). TC_OUTPUT is used to implement pvm_catchout() (Section ). User-definable control messages may be added in the future as a way of implementing PVM signal handlers .
Tag Meaning ---------------------------------------- TC_CONREQ Connection request TC_CONACK Connection ack TC_TASKEXIT Task exited/doesn't exist TC_NOOP Do nothing TC_OUTPUT Claim child stdout data TC_SETTMASK Change task trace mask ----------------------------------------