E.2.1 Shared Passive Library Units
A shared passive library unit is used for managing
global data shared between active partitions. The restrictions on shared
passive library units prevent the data or tasks of one active partition
from being accessible to another active partition through references
implicit in objects declared in the shared passive library unit.
Legality Rules
When
the library unit aspect (see
13.1.1) Shared_Passive
of a library unit is True, the library unit is a
shared passive library
unit. The following restrictions apply to such a library unit:
it shall be preelaborable (see
10.2.1);
it shall depend semantically only upon declared
pure or shared passive
library_items;
it shall not contain
a library-level declaration:
of an access type that designates a class-wide
type;
of a type with a part that is of a task
type;
that contains a name that denotes a type
declared within a declared-pure package, if that type has a part that
is of an access type; for the purposes of this rule, the parts considered
include those of the full views of any private types or private extensions.
Notwithstanding
the definition of accessibility given in
3.10.2,
the declaration of a library unit P1 is not accessible from within the
declarative region of a shared passive library unit P2, unless the shared
passive library unit P2 depends semantically on P1.
Static Semantics
A shared passive library unit
is preelaborated.
Post-Compilation Rules
A shared passive library unit shall be assigned to
at most one partition within a given program.
Notwithstanding
the rule given in
10.2, a compilation unit
in a given partition does not
need (in the sense of
10.2)
the shared passive library units on which it depends semantically to
be included in that same partition; they will typically reside in separate
passive partitions.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe