-- --
-- S p e c --
-- --
--- Copyright (C) 2003 Ada Core Technologies, Inc. --
+-- Copyright (C) 2003-2005, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
-- for more details. You should have received a copy of the GNU General --
-- Public License distributed with GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
--- MA 02111-1307, USA. --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
package GNAT.Semaphores is
Default_Ceiling : constant System.Priority := System.Default_Priority;
- -- A convenient value for the priority discriminants that follow.
+ -- A convenient value for the priority discriminants that follow
------------------------
-- Counting_Semaphore --
-- value of this counter is set by clients via the discriminant.
Ceiling : System.Priority)
- -- Users must specify the ceiling priority for the object.
- -- If the Real-Time Systems Annex is not in use this value
- -- is not important.
+ -- Users must specify the ceiling priority for the object. If the
+ -- Real-Time Systems Annex is not in use this value is not important.
is
pragma Priority (Ceiling);
entry Seize;
- -- Blocks caller until/unless the semaphore's internal counter
- -- is greater than zero.
- -- Decrements the semaphore's internal counter when executed.
+ -- Blocks caller until/unless the semaphore's internal counter is
+ -- greater than zero. Decrements the semaphore's internal counter when
+ -- executed.
procedure Release;
- -- Increments the semaphore's internal counter.
+ -- Increments the semaphore's internal counter
private
Count : Natural := Initial_Value;
----------------------
protected type Binary_Semaphore
- (Initially_Available : Boolean;
- -- Binary semaphores are either available or not; there is no
- -- internal count involved. The discriminant value determines
- -- whether the individual object is initially available.
+ (Initially_Available : Boolean;
+ -- Binary semaphores are either available or not; there is no internal
+ -- count involved. The discriminant value determines whether the
+ -- individual object is initially available.
+
Ceiling : System.Priority)
- -- Users must specify the ceiling priority for the object.
- -- If the Real-Time Systems Annex is not in use
- -- this value is not important.
+ -- Users must specify the ceiling priority for the object. If the
+ -- Real-Time Systems Annex is not in use this value is not important.
is
pragma Priority (Ceiling);
entry Seize;
- -- Blocks the caller unless/until semaphore is available.
- -- After execution the semaphore is no longer available.
+ -- Blocks the caller unless/until semaphore is available. After
+ -- execution the semaphore is no longer available.
procedure Release;
- -- Makes the semaphore available.
+ -- Makes the semaphore available
private
Available : Boolean := Initially_Available;