diff options
Diffstat (limited to 'doc/itron3.0/mailbox.t')
-rw-r--r-- | doc/itron3.0/mailbox.t | 338 |
1 files changed, 338 insertions, 0 deletions
diff --git a/doc/itron3.0/mailbox.t b/doc/itron3.0/mailbox.t new file mode 100644 index 0000000000..34746c743a --- /dev/null +++ b/doc/itron3.0/mailbox.t @@ -0,0 +1,338 @@ +@c +@c COPYRIGHT (c) 1988-2002. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c This is the chapter from the RTEMS ITRON User's Guide that +@c documents the services provided by the mailbox +@c manager. +@c +@c $Id$ +@c + + +@chapter Mailbox Manager + +@section Introduction + +The +mailbox manager is basically a linked list, hidden by the super core message queue and consists of a control block, a private structure. The control block comprises of the create mailbox structure, the message structure and the reference mailbox structure. + +The services provided by the mailbox manager are: + +@itemize @bullet +@item @code{cre_mbx} - Create Mailbox +@item @code{del_mbx} - Delete Mailbox +@item @code{snd_msg} - Send Message to Mailbox +@item @code{rcv_msg} - Receive Message from Mailbox +@item @code{prcv_msg} - Poll and Receive Message from Mailbox +@item @code{trcv_msg} - Receive Message from Mailbox with Timeout +@item @code{ref_mbx} - Reference Mailbox Status +@end itemize + + +@section Background + +@section Operations + +@section System Calls + +This section details the mailbox manager's services. +A subsection is dedicated to each of this manager's services +and describes the calling sequence, related constants, usage, +and status codes. + + +@c +@c cre_mbx +@c + +@page + +@subsection cre_mbx - Create Mailbox + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER cre_mbx( + ID mbxid, + T_CMBX *pk_cmbx +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_NOMEM} - Insufficient memory@* +@code{E_ID} - Invalid ID number@* +@code{E_RSATR} - Reserved attribute@* +@code{E_OBJ} - Invalid object state@* +@code{E_OACV} - Object access violation@* +@code{E_PAR} - Parameter error + + +@subheading DESCRIPTION: + +Allocated a control area/buffer space for mailbox with some ID. + +@example + User area: +ve ids + System area: -ve ids +@end example + +User may specify if its FIFO or priority level queue. +Assumes shared memory b/w communicating processes. +Initializes core message queue for this mbox. + +@subheading NOTES: + +NONE + + +@c +@c del_mbx +@c + +@page + +@subsection del_mbx - Delete Mailbox + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER del_mbx( + ID mbxid +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation + +@subheading DESCRIPTION: + +Specified by the ID, cleans up all data structures and control blocks. + +@subheading NOTES: + +NONE + + +@c +@c snd_msg +@c + +@page + +@subsection snd_msg - Send Message to Mailbox + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER snd_msg( + ID mbxid, + T_MSG *pk_msg +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation@* +@code{E_QOVR} - Queueing or nesting overflow + +@subheading DESCRIPTION: + +Sends the address of message to mbox having a given id, any waiting tasks (blocked tasks) will be woken up. It supports non-blocking send. + +@subheading NOTES: + +NONE + + +@c +@c rcv_msg +@c + +@page + +@subsection rcv_msg - Receive Message from Mailbox + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER rcv_msg( + T_MSG **ppk_msg, + ID mbxid +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation@* +@code{E_PAR} - Parameter error@* +@code{E_DLT} - The object being waited for was deleted@* +@code{E_RLWAI} - WAIT state was forcibly released@* +@code{E_CTX} - Context error + +@subheading DESCRIPTION: + +If there is no message then receiver blocks, if not empty then it takes the first message of the queue. + +@subheading NOTES: + +NONE + + +@c +@c prcv_msg +@c + +@page + +@subsection prcv_msg - Poll and Receive Message from Mailbox + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER prcv_msg( + T_MSG **ppk_msg, + ID mbxid +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation@* +@code{E_PAR} - Parameter error@* +@code{E_DLT} - The object being waited for was deleted@* +@code{E_RLWAI} - WAIT state was forcibly released@* +@code{E_CTX} - Context error@* + +@subheading DESCRIPTION: + +Poll and receive message from mailbox. + +@subheading NOTES: + +NONE + + +@c +@c trcv_msg +@c + +@page + +@subsection trcv_msg - Receive Message from Mailbox with Timeout + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER trcv_msg( + T_MSG **ppk_msg, + ID mbxid, + TMO tmout +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation@* +@code{E_PAR} - Parameter error@* +@code{E_DLT} - The object being waited for was deleted@* +@code{E_RLWAI} - WAIT state was forcibly released@* +@code{E_CTX} - Context error + +@subheading DESCRIPTION: + +Blocking receive with a maximum timeout. + +@subheading NOTES: + +NONE + + +@c +@c ref_mbx +@c + +@page + +@subsection ref_mbx - Reference Mailbox Status + +@subheading CALLING SEQUENCE: + +@ifset is-C +@example +ER ref_mbx( + T_RMBX *pk_rmbx, + ID mbxid +); +@end example +@end ifset + +@ifset is-Ada +@end ifset + +@subheading STATUS CODES: + +@code{E_OK} - Normal completion@* +@code{E_ID} - Invalid ID number@* +@code{E_NOEXS} - Object does not exist@* +@code{E_OACV} - Object access violation@* +@code{E_PAR} - Parameter error + +@subheading DESCRIPTION: + +Supports non-blocking receive. If there are no messages, it returns -1. Also returns id of the next process waiting on a message. + +@subheading NOTES: + +NONE + + |