--- ai12s/ai12-0321-1.txt 2019/03/10 01:52:31 1.3 +++ ai12s/ai12-0321-1.txt 2019/03/12 04:55:54 1.4 @@ -1,6 +1,8 @@ -!standard C.6.4(0) 19-03-09 AI12-0321-1/02 -!standard C.6.5(0) +!standard C.6.3(0) 19-03-11 AI12-0321-1/03 +!standard C.6.4(0) !class Amendment 19-03-07 +!status Amendment 1-2012 19-03-11 +!status ARG Approved 9-0-1 19-03-11 !status work item 19-03-07 !status received 19-03-07 !priority Low @@ -49,7 +51,7 @@ !wording -C.6.4 The Package System.Atomic_Operations.Test_And_Set +C.6.3 The Package System.Atomic_Operations.Test_And_Set The language-defined package System.Atomic_Operations.Test_And_Set provides an operation to atomically set and clear an atomic flag object. @@ -83,14 +85,14 @@ An atomic flag object can either be considered to be set or cleared. Atomic_Test_And_Set performs an atomic test-and-set operation on Item. -Item is set to some implementation defined nonzero "set" value and the -return value is true if and only if the previous contents were "set". +Item is set to some implementation defined nonzero value. The function returns +True if the previous contents were nonzero, and otherwise returns False. Atomic_Clear performs an atomic clear operation on Item. After the operation, Item contains 0. This call should be used in conjunction with Atomic_Test_And_Set. -C.6.5 The Package System.Atomic_Operations.Arithmetic +C.6.4 The Package System.Atomic_Operations.Arithmetic The language-defined package System.Atomic_Operations.Arithmetic provides operations to perform arithmetic atomically on objects of @@ -114,18 +116,6 @@ Value : Atomic_Type) with Convention => Intrinsic; - procedure Atomic_Bitwise_And (Item : aliased in out Atomic_Type; - Value : Atomic_Type) - with Convention => Intrinsic; - - procedure Atomic_Bitwise_Or (Item : aliased in out Atomic_Type; - Value : Atomic_Type) - with Convention => Intrinsic; - - procedure Atomic_Xor (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 @@ -136,73 +126,37 @@ Value : Atomic_Type) return Atomic_Type with Convention => Intrinsic; - function Atomic_Fetch_And_Bitwise_And - (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type - with Convention => Intrinsic; - - function Atomic_Fetch_And_Bitwise_Or - (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type - with Convention => Intrinsic; - - function Atomic_Fetch_And_Xor - (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.Arithmetic; -The following procedures perform the operation suggested by the name. - i.e. Item := Item op Value; procedure Atomic_Add (Item : aliased in out Atomic_Type; Value : Atomic_Type) with Intrinsic; + Atomically performs: Item := Item + Value; + procedure Atomic_Subtract (Item : aliased in out Atomic_Type; Value : Atomic_Type) with Intrinsic; - procedure Atomic_Bitwise_And (Item : aliased in out Atomic_Type; - Value : Atomic_Type) - with Intrinsic; + Atomically performs: Item := Item - Value; - procedure Atomic_Bitwise_Or (Item : aliased in out Atomic_Type; - Value : Atomic_Type) - with Intrinsic; - procedure Atomic_Xor (Item : aliased in out Atomic_Type; - Value : Atomic_Type) - with Intrinsic; - -The following functions perform the operation suggested by the name, -and return the value that had previously been in Item. - i.e. Tmp := Item; Item := Item op Value; return Tmp; - function Atomic_Fetch_And_Add (Item : aliased in out Atomic_Type; Value : Atomic_Type) return Atomic_Type with Intrinsic; - function Atomic_Fetch_And_Subtract (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type - with Intrinsic; - - function Atomic_Fetch_And_Bitwise_And (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type - with Intrinsic; + Atomically performs: Tmp := Item; Item := Item + Value; return Tmp; - function Atomic_Fetch_And_Bitwise_Or (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type - with Intrinsic; - function Atomic_Fetch_And_Xor (Item : aliased in out Atomic_Type; - Value : Atomic_Type) return Atomic_Type + function Atomic_Fetch_And_Subtract (Item : aliased in out Atomic_Type; + Value : Atomic_Type) return Atomic_Type with Intrinsic; + Atomically performs: Tmp := Item; Item := Item - Value; return Tmp; !discussion

Questions? Ask the ACAA Technical Agent