source: rtems/c/src/ada/rtems-semaphore.adb @ 1987020

4.115
Last change on this file since 1987020 was 1987020, checked in by Joel Sherrill <joel.sherrill@…>, on Feb 16, 2011 at 3:52:29 PM

2011-02-16 Joel Sherrill <joel.sherrill@…>

  • ada/Makefile.am, ada/preinstall.am, ada/rtems.adb, ada/rtems.ads: Split RTEMS Ada95 binding into a master package and a child package per Manager. This is better Ada style.
  • ada/rtems-barrier.adb, ada/rtems-barrier.ads, ada/rtems-clock.adb, ada/rtems-clock.ads, ada/rtems-cpu_usage.ads, ada/rtems-debug.adb, ada/rtems-debug.ads, ada/rtems-event.adb, ada/rtems-event.ads, ada/rtems-extension.adb, ada/rtems-extension.ads, ada/rtems-fatal.adb, ada/rtems-fatal.ads, ada/rtems-interrupt.ads, ada/rtems-io.adb, ada/rtems-io.ads, ada/rtems-message_queue.adb, ada/rtems-message_queue.ads, ada/rtems-object.adb, ada/rtems-object.ads, ada/rtems-partition.adb, ada/rtems-partition.ads, ada/rtems-port.adb, ada/rtems-port.ads, ada/rtems-rate_monotonic.adb, ada/rtems-rate_monotonic.ads, ada/rtems-region.adb, ada/rtems-region.ads, ada/rtems-semaphore.adb, ada/rtems-semaphore.ads, ada/rtems-signal.adb, ada/rtems-signal.ads, ada/rtems-stack_checker.ads, ada/rtems-tasks.adb, ada/rtems-tasks.ads, ada/rtems-timer.adb, ada/rtems-timer.ads: New files.
  • Property mode set to 100644
File size: 3.2 KB
Line 
1--
2--  RTEMS / Body
3--
4--  DESCRIPTION:
5--
6--  This package provides the interface to the RTEMS API.
7--
8--
9--  DEPENDENCIES:
10--
11--
12--
13--  COPYRIGHT (c) 1997-2011.
14--  On-Line Applications Research Corporation (OAR).
15--
16--  The license and distribution terms for this file may in
17--  the file LICENSE in this distribution or at
18--  http://www.rtems.com/license/LICENSE.
19--
20--  $Id$
21--
22
23package body RTEMS.Semaphore is
24
25   --
26   -- Semaphore Manager
27   --
28
29   procedure Create
30     (Name             : in RTEMS.Name;
31      Count            : in RTEMS.Unsigned32;
32      Attribute_Set    : in RTEMS.Attribute;
33      Priority_Ceiling : in RTEMS.Tasks.Priority;
34      ID               : out RTEMS.ID;
35      Result           : out RTEMS.Status_Codes)
36   is
37      function Create_Base
38        (Name             : RTEMS.Name;
39         Count            : RTEMS.Unsigned32;
40         Attribute_Set    : RTEMS.Attribute;
41         Priority_Ceiling : RTEMS.Tasks.Priority;
42         ID               : access RTEMS.ID)
43         return             RTEMS.Status_Codes;
44      pragma Import (C, Create_Base, "rtems_semaphore_create");
45      ID_Base : aliased RTEMS.ID;
46   begin
47
48      Result :=
49         Create_Base
50           (Name,
51            Count,
52            Attribute_Set,
53            Priority_Ceiling,
54            ID_Base'Access);
55      ID     := ID_Base;
56
57   end Create;
58
59   procedure Delete
60     (ID     : in RTEMS.ID;
61      Result : out RTEMS.Status_Codes)
62   is
63      function Delete_Base
64        (ID   : RTEMS.ID)
65         return RTEMS.Status_Codes;
66      pragma Import (C, Delete_Base, "rtems_semaphore_delete");
67   begin
68
69      Result := Delete_Base (ID);
70
71   end Delete;
72
73   procedure Ident
74     (Name   : in RTEMS.Name;
75      Node   : in RTEMS.Unsigned32;
76      ID     : out RTEMS.ID;
77      Result : out RTEMS.Status_Codes)
78   is
79      function Ident_Base
80        (Name : RTEMS.Name;
81         Node : RTEMS.Unsigned32;
82         ID   : access RTEMS.ID)
83         return RTEMS.Status_Codes;
84      pragma Import (C, Ident_Base, "rtems_semaphore_ident");
85      ID_Base : aliased RTEMS.ID;
86   begin
87
88      Result := Ident_Base (Name, Node, ID_Base'Access);
89      ID     := ID_Base;
90
91   end Ident;
92
93   procedure Obtain
94     (ID         : in RTEMS.ID;
95      Option_Set : in RTEMS.Option;
96      Timeout    : in RTEMS.Interval;
97      Result     : out RTEMS.Status_Codes)
98   is
99      function Obtain_Base
100        (ID         : RTEMS.ID;
101         Option_Set : RTEMS.Option;
102         Timeout    : RTEMS.Interval)
103         return       RTEMS.Status_Codes;
104      pragma Import (C, Obtain_Base, "rtems_semaphore_obtain");
105   begin
106
107      Result := Obtain_Base (ID, Option_Set, Timeout);
108
109   end Obtain;
110
111   procedure Release
112     (ID     : in RTEMS.ID;
113      Result : out RTEMS.Status_Codes)
114   is
115      function Release_Base
116        (ID   : RTEMS.ID)
117         return RTEMS.Status_Codes;
118      pragma Import (C, Release_Base, "rtems_semaphore_release");
119   begin
120
121      Result := Release_Base (ID);
122
123   end Release;
124
125   procedure Flush
126     (ID     : in RTEMS.ID;
127      Result : out RTEMS.Status_Codes)
128   is
129      function Flush_Base
130        (ID   : RTEMS.ID)
131         return RTEMS.Status_Codes;
132      pragma Import (C, Flush_Base, "rtems_semaphore_flush");
133   begin
134
135      Result := Flush_Base (ID);
136
137   end Flush;
138
139end RTEMS.Semaphore;
Note: See TracBrowser for help on using the repository browser.