- (1)
- The primary means for intertask communication is provided by calls on entries
and protected subprograms. Calls on protected subprograms allow coordinated
access to shared data objects. Entry calls allow for blocking the caller until
a given condition is satisfied (namely, that the corresponding entry is open
-- see 9.5.3), and then communicating data or control
information directly with another task or indirectly via a shared protected
object.
Static Semantics
- (2)
- Any call on an entry or on a protected subprogram identifies a target
object for the operation, which is either a task (for an entry call) or a
protected object (for an entry call or a protected subprogram call). The
target object is considered an implicit parameter to the operation, and is
determined by the operation name (or prefix) used in the call on the
operation, as follows:
- (3)
- If it is a direct_name or expanded name that denotes the
declaration (or body) of the operation, then the target object is
implicitly specified to be the current instance of the task or
protected unit immediately enclosing the operation; such a call
is defined to be an internal call;
- (4)
- If it is a selected_component that is not an expanded name, then
the target object is explicitly specified to be the task or
protected object denoted by the prefix of the name; such a call
is defined to be an external call;
- (5)
- If the name or prefix is a dereference (implicit or explicit) of
an access-to-protected-subprogram value, then the target object
is determined by the prefix of the Access attribute_reference
that produced the access value originally, and the call is
defined to be an external call;
- (6)
- If the name or prefix denotes a subprogram_renaming_declaration,
then the target object is as determined by the name of the
renamed entity.
- (7)
- A corresponding definition of target object applies to a requeue_statement
(see 9.5.4), with a corresponding distinction between
an internal requeue and an external requeue.
Dynamic Semantics
- (8)
- Within the body of a protected operation, the current instance (see
8.6) of the immediately enclosing protected unit is determined by the
target object specified (implicitly or explicitly) in the call (or requeue)
on the protected operation.
- (9)
- Any call on a protected procedure or entry of a target protected object
is defined to be an update to the object, as is a requeue on such an entry.
Subclauses
- Protected Subprograms and Protected Actions
- Entries and Accept Statements
- Entry Calls
- Requeue Statements
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12