|
|
NM and CM callable.
Receives mail from another process. Process handling (PH) capability is
required.
Syntax
U16 I16V UDS U16V
mailstatus := RECEIVEMAIL (pin, location, waitflag);
Functional Return
- mailstatus
16-bit unsigned integer (assigned functional return)
Returns one of the following values:
Value | Meaning |
0 | Mailbox empty and waitflag bit (15:1)
= 0. |
1 | No message collected, the mailbox contained outgoing
mail from the receiving process. |
2 | Message collected successfully. |
3 | Error occurred because an invalid pin
was specified or a bounds check failed. |
4 | Request denied, waitflag specified that
the receiving process 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 suspended, neither could activate the
other, and they may be deadlocked. |
Parameters
- pin
16-bit signed integer by value (required)
The process sending the mail. If you specify a child process,
pin is the process identification number (PIN) of that
process. If you specify a parent process, pin is
zero.
- location
user-defined structure (required)
The buffer where the message is written.
- waitflag
16-bit unsigned integer by value (required)
The action to be taken if the mailbox is empty. This is determined by the
setting of bit (15:1), which has the following settings:
Value | Meaning |
0 | Return immediately to the calling process. |
1 | Wait until incoming mail is ready for collection. |
Operation Notes
The RECEIVEMAIL intrinsic lets a process collect mail transmitted to
it by its parent or a child. If the mailbox for the receiving process is empty,
the action taken depends on the waitflag parameter specified in
the RECEIVEMAIL intrinsic call. If the mailbox is currently in use by
another process, RECEIVEMAIL waits until the mailbox is free before
accessing it.
Condition Codes
CCE (2) | Request granted. The mail was collected (value 2 is
returned to mailstatus) or the mail was not collected
because the mailbox contained outgoing mail from the receiving process
(value 1 is returned to mailstatus). |
CCG (0) | Request denied. An illegal pin
parameter (value 3 is returned to mailstatus). |
CCL (1) | Request denied. The location parameter
does not allow write access on the stack address (value 3 is returned to
mailstatus) or because both sending and receiving processes
are waiting for incoming mail, causing a deadlock (value 4 is returned to
mailstatus). |
Related Information
|