NAME
Remote reference
-
mechanism for determining the current
local state of an active process from within a
never
claim.
SYNTAX
name '['
any_expr ']' @
name DESCRIPTION
The remote reference operator takes three arguments:
the first is the name of a previously declared
proctype ,
the second is
an expression, which is evaluated to yield the instantiation
number (i.e., the pid) of a currently executing process of that type, and
the third argument is the name of a label that is defined
within the
proctype .
The expression returns a non-zero value
if and only if the process referred to is currently
in the local control state marked by the label-name specified.
EXAMPLES
active proctype main () {
L: skip;
skip
}
never { /* process 0 cannot remain at L forever */
accept: do
:: main[0]@L
od
}
NOTES
Because
init ,
never ,
trace ,
and
notrace
are not valid proctype names but keywords, it is not possible to refer
to the state of these special
processes with a remote reference:
init[0]@label /* no good */
never[0]@label /* no good */
trace[0]@label /* no good */
notrace[0]@label /* no good */
It is simple to avoid using
init ,
and use an
active proctype
declaration instead, as shown in the example.
SEE ALSO
active(2), proctype(2), _pid(5), run(5).
|