next up previous top
Next: RemoteProcCall
Up: Connector Type
Previous: PLBundler

ProcedureCall

Semantics

The connector type ProcedureCall provides an architectural abstraction for the defines/calls relations (inter-module connections) of functions and procedures supported by programming languages. In addition to making this type of connection first-class (i.e., visible as an entity at the architecture description level), the ProcedureCall connector type supports type-checking of the players in the connection on the basis of signatures as well as the spelling of the names.

The system designer may specify the Rename property in the property list of an instantiation of a ProcedureCall connector to bypass the semantic check on the names of the players (meaning that they do not have to be the same). In such a case, the UniCon compiler detects and repairs such name mismatches in the underlying system implementation.

Role types

Roles of the following types can be legally defined in the protocol of a connector of type ProcedureCall:

a definer of a local function or procedure
a caller of a local function or procedure

Properties

The following properties can be legally included in the property list of a connector of type ProcedureCall. Properties legal in a <protocol> property list have a P in parentheses after the property name; those legal in an <instantiation> or <establish> property list have an I:

The syntax for an InstFormals property in a connector of type
ProcedureCall is a comma-separated list of <parameter>s enclosed in parentheses. A <parameter> consists of an <identifier>, followed by a `=', followed by a <complex string> or the language keyword NODEFAULT. A <complex string> is a simple "string" or a sequence of "string"s concatenated by the `&' character:

INSTFORMALS (first_parameter = "an initial value",
second_parameter = "a much" &
"longer initial value that " &
"will not fit on one line",
third_parameter = NODEFAULT)
The Rename property has no associated value. The syntax, therefore, is simply:

RENAME

Semantic Checks

The following are the semantic checks made in connections of type ProcedureCall:

  1. The name of the player playing the Caller role must be identical (including case) to the name of the player playing the Definer role, unless the Rename property is specified in the connection.

  2. The number of arguments, the data types of the arguments, and the return type in the signature of the player playing the Caller role must be identical (including case of identifiers) to the number of arguments, the data types of the arguments, and the return type in the signature of the player playing the Definer role. (Warning only)

Implementation Semantics

ProcedureCall connections are realized as linker directives that describe how function and procedure calls in the underlying system implementation are to be resolved with the addresses of the corresponding function and procedure definitions within a single address space.

If a name mismatch is detected in a ProcedureCall connection and the Rename property is specified, the UniCon compiler renames both identifiers in the source code of the implementation to a third, UniCon-generated identifier to resolve the mismatch. The renaming occurs at compile-time via macro names supplied with the -D option to invocations of the C language compiler.


next up previous top
Next: RemoteProcCall
Up: Connector Type
Previous: PLBundler

Comments? Mail the current maintainer of this page.

Author: Gregory Zelesnik

Last Modified: May 12, 1996