C.6.5 The Package System.Atomic_Operations.Modular_Arithmetic
{
AI12-0364-1}
The language-defined generic package System.Atomic_Operations.Modular_Arithmetic
provides operations to perform arithmetic atomically on objects of modular
types.
Static Semantics
{
AI12-0364-1}
The generic library package System.Atomic_Operations.Modular_Arithmetic
has the following declaration:
generic
type Atomic_Type
is mod <>
with Atomic;
package System.Atomic_Operations.Modular_Arithmetic
with Pure, Nonblocking
is
procedure Atomic_Add (Item :
aliased in out Atomic_Type;
Value : Atomic_Type)
with Convention => Intrinsic;
procedure Atomic_Subtract (Item :
aliased in out Atomic_Type;
Value : Atomic_Type)
with Convention => Intrinsic;
function Atomic_Fetch_And_Add
(Item :
aliased in out Atomic_Type;
Value : Atomic_Type)
return Atomic_Type
with Convention => Intrinsic;
function Atomic_Fetch_And_Subtract
(Item :
aliased in out Atomic_Type;
Value : Atomic_Type)
return Atomic_Type
with Convention => Intrinsic;
function Is_Lock_Free (Item :
aliased Atomic_Type)
return Boolean
with Convention => Intrinsic;
end System.Atomic_Operations.Modular_Arithmetic;
{
AI12-0364-1}
The operations of this package are defined as follows:
procedure Atomic_Add (Item : aliased in out Atomic_Type;
Value : Atomic_Type)
with Convention => Intrinsic;
{
AI12-0364-1}
Atomically performs:
Item := Item + Value;
procedure Atomic_Subtract (Item : aliased in out Atomic_Type;
Value : Atomic_Type)
with Convention => Intrinsic;
{
AI12-0364-1}
Atomically performs:
Item := Item - Value;
function Atomic_Fetch_And_Add
(Item : aliased in out Atomic_Type;
Value : Atomic_Type) return Atomic_Type
with Convention => Intrinsic;
{
AI12-0364-1}
Atomically performs:
Tmp := Item; Item := Item + Value; return
Tmp;
function Atomic_Fetch_And_Subtract
(Item : aliased in out Atomic_Type;
Value : Atomic_Type) return Atomic_Type
with Convention => Intrinsic;
{
AI12-0364-1}
Atomically performs:
Tmp := Item; Item := Item - Value; return
Tmp;
Extensions to Ada 2012
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe