HPlogo Interprocess Communication: Programmer's Guide: HP 3000 MPE/iX Computer Systems > Chapter 7 Interprocess Communication Via the MAIL Facility

Receiving (Collecting) Mail

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Index

A process collects mail transmitted from its parent or a child with the RECEIVEMAIL intrinsic. If the mailbox for the receiving process is empty, the action taken depends on the waitflag parameter specified in RECEIVEMAIL.

To collect a message from a child process, the following intrinsic call could be used:


   STAT:=RECEIVEMAIL(CHILDPIN,MDATA,WAITSTAT);

The parameters specified are:

pin

CHILDPIN, which contains the Process Identification Number of the child process (0 for parent process).

location

MDATA, an array in the stack in which the incoming mail will be stored.

waitflag

WAITSTAT, a 16-bit unsigned integer value. If bit (15:1)=1, the intrinsic will wait until the incoming mail is ready for collection. If bit (15:1)=0, the intrinsic will return to the calling process immediately.

One of the following status codes is returned to STAT:

Status

Meaning

0

The mailbox was empty (and WAITSTAT bit (15:1)=0)

1

No message was collected because the mailbox contained outgoing mail from the receiving process.

2

The message was collected successfully.

3

An error occurred because of an illegal pin or a bounds check failed.

4

The request was rejected because waitflag specified that the receiving process should wait for mail if the mailbox is empty, but the other process sharing the mailbox is already suspended, waiting for mail. If both processes were blocked, neither could activate the other, and they could be deadlocked.

Feedback to webmaster