Index: c/src/ada/ChangeLog
===================================================================
--- c/src/ada/ChangeLog	(revision 1b03eed0e589a0f677799aa417a8e9464452e12c)
+++ c/src/ada/ChangeLog	(revision 8294a5d9f660865776742c5f9f418bab7a99170b)
@@ -1,2 +1,7 @@
+2007-10-26	Glenn Humphrey <glenn.humphrey@OARcorp.com>
+
+	* rtems.adb, rtems.ads: Merge binding updates from CVS head. Bindings
+	should now be reasonably in sync with C Classic API.
+
 2007-09-05	Joel Sherrill <joel.sherrill@oarcorp.com>
 
Index: c/src/ada/rtems.adb
===================================================================
--- c/src/ada/rtems.adb	(revision 1b03eed0e589a0f677799aa417a8e9464452e12c)
+++ c/src/ada/rtems.adb	(revision 8294a5d9f660865776742c5f9f418bab7a99170b)
@@ -18,5 +18,5 @@
 --  http://www.rtems.com/license/LICENSE.
 --
---  rtems.adb,v 1.13.2.2 2003/09/04 18:46:47 joel Exp
+--  $Id$
 --
 
@@ -217,4 +217,19 @@
 
    --
+   --  Initialization Manager -- Shutdown Only
+   --
+   procedure Shutdown_Executive (
+      Status           : in     RTEMS.Unsigned32
+   ) is
+      procedure Shutdown_Executive_Base (
+         Status : RTEMS.Unsigned32
+      );
+      pragma Import (C, Shutdown_Executive_Base, "rtems_shutdown_executive");
+   begin
+      Shutdown_Executive_Base (Status);
+   end Shutdown_Executive;
+  
+
+   --
    --  Task Manager
    --
@@ -349,4 +364,18 @@
    end Task_Resume;
  
+   procedure Task_Is_Suspended (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Task_Is_Suspended_Base (
+         ID : RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Task_Is_Suspended_Base, "rtems_task_is_suspended");
+   begin
+
+      Result := Task_Is_Suspended_Base ( ID );
+
+   end Task_Is_Suspended;
+ 
    procedure Task_Set_Priority (
       ID           : in     RTEMS.ID;
@@ -435,4 +464,70 @@
    end Task_Set_Note;
  
+   procedure Task_Variable_Add (
+      ID            : in     RTEMS.ID;
+      Task_Variable : in     RTEMS.Address;
+      Dtor          : in     RTEMS.Task_Variable_Dtor;
+      Result        :    out RTEMS.Status_Codes
+   ) is
+      function Task_Variable_Add_Base (
+         ID            : RTEMS.ID;
+         Task_Variable : RTEMS.Address;
+         Dtor          : RTEMS.Task_Variable_Dtor
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Task_Variable_Add_Base, "rtems_task_variable_add");
+   begin
+
+      Result := Task_Variable_Add_Base ( ID, Task_Variable, Dtor );
+
+   end Task_Variable_Add;
+
+   procedure Task_Variable_Get (
+      ID                  : in     RTEMS.ID;
+      Task_Variable       :    out RTEMS.Address;
+      Task_Variable_Value :    out RTEMS.Address;
+      Result              :    out RTEMS.Status_Codes
+   ) is
+      function Task_Variable_Get_Base (
+         ID                  : RTEMS.ID;
+         Task_Variable       : access RTEMS.Address;
+         Task_Variable_Value : access RTEMS.Address
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Task_Variable_Get_Base, "rtems_task_variable_get");
+      Task_Variable_Base       : aliased RTEMS.Address;
+      Task_Variable_Value_Base : aliased RTEMS.Address;
+   begin
+
+      Result := Task_Variable_Get_Base (
+         ID,
+         Task_Variable_Base'Unchecked_Access,
+         Task_Variable_Value_Base'Unchecked_Access
+      );
+      Task_Variable := Task_Variable_Base;
+      Task_Variable_Value := Task_Variable_Value_Base;
+
+   end Task_Variable_Get;
+
+   procedure Task_Variable_Delete (
+      ID                  : in     RTEMS.ID;
+      Task_Variable       :    out RTEMS.Address;
+      Result              :    out RTEMS.Status_Codes
+   ) is
+      function Task_Variable_Delete_Base (
+         ID                  : RTEMS.ID;
+         Task_Variable       : access RTEMS.Address
+      )  return RTEMS.Status_Codes;
+      pragma Import (
+         C, Task_Variable_Delete_Base, "rtems_task_variable_delete"
+      );
+      Task_Variable_Base : aliased RTEMS.Address;
+   begin
+
+      Result := Task_Variable_Delete_Base (
+         ID, Task_Variable_Base'Unchecked_Access
+      );
+      Task_Variable := Task_Variable_Base;
+
+   end Task_Variable_Delete;
+
    procedure Task_Wake_When (
       Time_Buffer : in     RTEMS.Time_Of_Day;
@@ -466,28 +561,4 @@
    -- Interrupt Manager
    --
-
-   procedure Interrupt_Catch (
-      New_ISR_Handler : in     RTEMS.Address;
-      Vector          : in     RTEMS.Vector_Number;
-      Old_ISR_Handler :    out RTEMS.Address;
-      Result          :    out RTEMS.Status_Codes
-   ) is
-      function Interrupt_Catch_Base (
-         New_ISR_Handler : RTEMS.Address;
-         Vector          : RTEMS.Vector_Number;
-         Old_ISR_Handler : access RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, Interrupt_Catch_Base, "rtems_interrupt_catch");
-      Old_ISR_Handler_Base : aliased RTEMS.Address;
-   begin
- 
-      Result := Interrupt_Catch_Base (
-         New_ISR_Handler,
-         Vector,
-         OLD_ISR_HANDLER_Base'Unchecked_Access
-      );
-      Old_ISR_Handler := OLD_ISR_HANDLER_Base;
- 
-   end Interrupt_Catch;
 
    -- Interrupt_Disable is interfaced in the specification
@@ -500,4 +571,18 @@
    -- 
  
+   procedure Clock_Set (
+      Time_Buffer : in     RTEMS.Time_Of_Day;
+      Result      :    out RTEMS.Status_Codes
+   ) is
+      function Clock_Set_Base (
+         Time_Buffer : RTEMS.Time_Of_Day
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Clock_Set_Base, "rtems_clock_set");
+   begin
+ 
+      Result := Clock_Set_Base ( Time_Buffer );
+
+   end Clock_Set;
+ 
    procedure Clock_Get (
       Option      : in     RTEMS.Clock_Get_Options;
@@ -505,28 +590,32 @@
       Result      :    out RTEMS.Status_Codes
    ) is
-      function Clock_Get_base (
+      function Clock_Get_Base (
          Option      : RTEMS.Clock_Get_Options;
          Time_Buffer : RTEMS.Address
       )  return RTEMS.Status_Codes;
-      pragma Import (C, Clock_Get_base, "rtems_clock_get");
-   begin
-
-      Result := Clock_Get_base ( Option, Time_Buffer );
+      pragma Import (C, Clock_Get_Base, "rtems_clock_get");
+   begin
+
+      Result := Clock_Get_Base ( Option, Time_Buffer );
 
    end Clock_Get;
  
-   procedure Clock_Set (
-      Time_Buffer : in     RTEMS.Time_Of_Day;
-      Result      :    out RTEMS.Status_Codes
-   ) is
-      function Clock_Set_base (
-         Time_Buffer : RTEMS.Time_Of_Day
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, Clock_Set_base, "rtems_clock_set");
-   begin
- 
-      Result := Clock_Set_base ( Time_Buffer );
-
-   end Clock_Set;
+   procedure Clock_Get_Uptime (
+      Uptime :    out RTEMS.Timespec;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Clock_Get_Uptime_Base (
+         Uptime : access RTEMS.Timespec
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Clock_Get_Uptime_Base, "rtems_clock_get_uptime");
+      Uptime_Base : aliased RTEMS.Timespec;
+   begin
+
+      Result := Clock_Get_Uptime_Base (
+         Uptime_Base'Unchecked_Access
+      );
+      Uptime := Uptime_Base;
+
+   end Clock_Get_Uptime;
  
    procedure Clock_Tick (
@@ -540,5 +629,5 @@
 
    end Clock_Tick;
- 
+
    --
    -- Extension Manager
@@ -891,4 +980,18 @@
    end Semaphore_Release;
  
+   procedure Semaphore_Flush (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Semaphore_Flush_Base (
+         ID : RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Semaphore_Flush_Base, "rtems_semaphore_flush");
+   begin
+ 
+      Result := Semaphore_Flush_Base ( ID );
+
+   end Semaphore_Flush;
+ 
    --
    -- Message Queue Manager
@@ -1058,4 +1161,28 @@
 
    end Message_Queue_Receive;
+ 
+   procedure Message_Queue_Get_Number_Pending (
+      ID     : in     RTEMS.ID;
+      Count  :    out RTEMS.Unsigned32;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Message_Queue_Get_Number_Pending_Base (
+         ID    : RTEMS.ID;
+         Count : access RTEMS.Unsigned32
+      )  return RTEMS.Status_Codes;
+      pragma Import (
+         C,
+         Message_Queue_Get_Number_Pending_Base,
+         "rtems_message_queue_get_number_pending"
+      );
+      COUNT_Base : aliased RTEMS.Unsigned32;
+   begin
+ 
+      Result := Message_Queue_Get_Number_Pending_Base (
+         ID, COUNT_Base'Unchecked_Access
+      );
+      Count := COUNT_Base;
+
+   end Message_Queue_Get_Number_Pending;
  
    procedure Message_Queue_Flush (
@@ -1427,4 +1554,32 @@
    end Region_Return_Segment;
  
+   procedure Region_Resize_Segment (
+      ID         : in     RTEMS.ID;
+      Segment    : in     RTEMS.Address;
+      Size       : in     RTEMS.Unsigned32;
+      Old_Size   :    out RTEMS.Unsigned32;
+      Result     :    out RTEMS.Status_Codes
+   ) is
+      function Region_Resize_Segment_Base (
+         ID       : RTEMS.ID;
+         Segment  : RTEMS.Address;
+         Size     : RTEMS.Unsigned32;
+         Old_Size : access RTEMS.Unsigned32
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Region_Resize_Segment_Base,
+         "rtems_region_resize_segment");
+      Old_Size_Base : aliased RTEMS.Unsigned32;
+   begin
+ 
+      Result := Region_Resize_Segment_Base (
+         ID,
+         Segment,
+         Size,
+         Old_Size_Base'Unchecked_Access
+      );
+      Old_Size := Old_Size_Base;
+
+   end Region_Resize_Segment;
+
    --
    -- Dual Ported Memory Manager
@@ -1543,137 +1698,4 @@
    end Port_Internal_To_External;
  
-   --
-   -- Input/Output Manager
-   --
- 
-   procedure IO_Register_Name (
-      Name   : in     String;
-      Major  : in     RTEMS.Device_Major_Number;
-      Minor  : in     RTEMS.Device_Minor_Number;
-      Result :    out RTEMS.Status_Codes
-   ) is
-      function IO_Register_Name_Base (
-         Name   : Interfaces.C.Char_Array;
-         Major  : RTEMS.Device_Major_Number;
-         Minor  : RTEMS.Device_Minor_Number
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Register_Name_Base, "rtems_io_register_name");
-   begin
-
-      Result :=
-         IO_Register_Name_Base ( Interfaces.C.To_C (Name), Major, Minor );
-
-   end IO_Register_Name;
-
-   procedure IO_Lookup_Name (
-      Name         : in     String;
-      Device_Info  : in     RTEMS.Driver_Name_t_Pointer;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Lookup_Name_Base (
-         Name        : Interfaces.C.Char_Array;
-         Device_Info : access RTEMS.Driver_Name_t
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Lookup_Name_Base, "rtems_io_lookup_name");
-      Device_Info_Base : aliased RTEMS.Driver_Name_t;
-   begin
-
-      Result := IO_Lookup_Name_Base (
-         Interfaces.C.To_C (Name),
-         Device_Info_Base'Unchecked_Access
-      );
-      Device_Info.All := Device_Info_Base;
-
-   end IO_Lookup_Name;
-
-   procedure IO_Open (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Open_Base (
-         Major        : RTEMS.Device_Major_Number;
-         Minor        : RTEMS.Device_Minor_Number;
-         Argument     : RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Open_Base, "rtems_io_open");
-   begin
- 
-      Result := IO_Open_Base (Major, Minor, Argument);
- 
-   end IO_Open;
- 
-   procedure IO_Close (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Close_Base (
-         Major        : RTEMS.Device_Major_Number;
-         Minor        : RTEMS.Device_Minor_Number;
-         Argument     : RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Close_Base, "rtems_io_close");
-   begin
- 
-      Result := IO_Close_Base (Major, Minor, Argument);
- 
-   end IO_Close;
- 
-   procedure IO_Read (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Read_Base (
-         Major        : RTEMS.Device_Major_Number;
-         Minor        : RTEMS.Device_Minor_Number;
-         Argument     : RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Read_Base, "rtems_io_read");
-   begin
- 
-      Result := IO_Read_Base (Major, Minor, Argument);
- 
-   end IO_Read;
- 
-   procedure IO_Write (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Write_Base (
-         Major        : RTEMS.Device_Major_Number;
-         Minor        : RTEMS.Device_Minor_Number;
-         Argument     : RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Write_Base, "rtems_io_write");
-   begin
- 
-      Result := IO_Write_Base (Major, Minor, Argument);
- 
-   end IO_Write;
- 
-   procedure IO_Control (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   ) is
-      function IO_Control_Base (
-         Major        : RTEMS.Device_Major_Number;
-         Minor        : RTEMS.Device_Minor_Number;
-         Argument     : RTEMS.Address
-      )  return RTEMS.Status_Codes;
-      pragma Import (C, IO_Control_Base, "rtems_io_control");
-   begin
- 
-      Result := IO_Control_Base (Major, Minor, Argument);
- 
-   end IO_Control;
  
    --
@@ -1684,5 +1706,5 @@
       The_Error : in     RTEMS.Unsigned32
    ) is
-      procedure Fatal_Error_Occurred_base (
+      procedure Fatal_Error_Occurred_Base (
          The_Error : RTEMS.Unsigned32
       );
@@ -1704,13 +1726,13 @@
       Result :    out RTEMS.Status_Codes
    ) is
-      function Rate_Monotonic_Create_base (
+      function Rate_Monotonic_Create_Base (
          Name   : RTEMS.Name;
          ID     : access RTEMS.ID
       )  return RTEMS.Status_Codes;
-      pragma Import (C, Rate_Monotonic_Create_base, "rtems_rate_monotonic_create");
+      pragma Import (C, Rate_Monotonic_Create_Base, "rtems_rate_monotonic_create");
       ID_Base : aliased RTEMS.ID;
    begin
  
-      Result := Rate_Monotonic_Create_base ( Name, ID_Base'Unchecked_Access );
+      Result := Rate_Monotonic_Create_Base ( Name, ID_Base'Unchecked_Access );
       ID := ID_Base;
 
@@ -1747,5 +1769,5 @@
    begin
  
-      Result := Rate_Monotonic_Delete_base ( ID );
+      Result := Rate_Monotonic_Delete_Base ( ID );
 
    end Rate_Monotonic_Delete;
@@ -1779,8 +1801,7 @@
    begin
  
-      Result := Rate_Monotonic_Period_base ( ID, Length );
+      Result := Rate_Monotonic_Period_Base ( ID, Length );
 
    end Rate_Monotonic_Period;
- 
  
    procedure Rate_Monotonic_Get_Status (
@@ -1808,4 +1829,115 @@
 
    end Rate_Monotonic_Get_Status;
+
+   procedure Rate_Monotonic_Reset_Statistics (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Rate_Monotonic_Reset_Statistics_Base (
+         ID : RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Rate_Monotonic_Reset_Statistics_Base,
+         "rtems_rate_monotonic_reset_statistics");
+   begin
+
+      Result := Rate_Monotonic_Reset_Statistics_Base ( ID );
+
+   end Rate_Monotonic_Reset_Statistics;
+
+
+   --
+   -- Barrier Manager
+   --
+
+   procedure Barrier_Create (
+      Name            : in     RTEMS.Name;
+      Attribute_Set   : in     RTEMS.Attribute;
+      Maximum_Waiters : in     RTEMS.Unsigned32;
+      ID              :    out RTEMS.ID;
+      Result          :    out RTEMS.Status_Codes
+   ) is
+      function Barrier_Create_Base (
+         Name            : RTEMS.Name;
+         Attribute_Set   : RTEMS.Attribute;
+         Maximum_Waiters : RTEMS.Unsigned32;
+         ID              : access RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Barrier_Create_Base, "rtems_barrier_create");
+      ID_Base : aliased RTEMS.ID;
+   begin
+
+      Result := Barrier_Create_Base (
+         Name,
+         Attribute_Set,
+         Maximum_Waiters,
+         ID_Base'Unchecked_Access
+      );
+      ID := ID_Base;
+
+   end Barrier_Create;
+
+   procedure Barrier_Ident (
+      Name   : in     RTEMS.Name;
+      ID     :    out RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Barrier_Ident_Base (
+         Name : RTEMS.Name;
+         ID   : access RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Barrier_Ident_Base, "rtems_barrier_ident");
+      ID_Base : aliased RTEMS.ID;
+   begin
+
+      Result := Barrier_Ident_Base ( Name, ID_Base'Unchecked_Access );
+      ID := ID_Base;
+
+   end Barrier_Ident;
+
+   procedure Barrier_Delete (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Barrier_Delete_Base (
+         ID : RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Barrier_Delete_Base, "rtems_barrier_delete");
+   begin
+
+      Result := Barrier_Delete_Base ( ID );
+
+   end Barrier_Delete;
+
+   procedure Barrier_Wait (
+      ID         : in     RTEMS.ID;
+      Option_Set : in     RTEMS.Option;
+      Timeout    : in     RTEMS.Interval;
+      Result     :    out RTEMS.Status_Codes
+   ) is
+      function Barrier_Wait_Base (
+         ID         : RTEMS.ID;
+         Option_Set : RTEMS.Option;
+         Timeout    : RTEMS.Interval
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Barrier_Wait_Base, "rtems_barrier_wait");
+   begin
+
+      Result := Barrier_Wait_Base ( ID, Option_Set, Timeout );
+
+   end Barrier_Wait;
+
+   procedure Barrier_Release (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   ) is
+      function Barrier_Release_Base (
+         ID : RTEMS.ID
+      )  return RTEMS.Status_Codes;
+      pragma Import (C, Barrier_Release_Base, "rtems_barrier_release");
+   begin
+
+      Result := Barrier_Release_Base ( ID );
+
+   end Barrier_Release;
 
  
Index: c/src/ada/rtems.ads
===================================================================
--- c/src/ada/rtems.ads	(revision 1b03eed0e589a0f677799aa417a8e9464452e12c)
+++ c/src/ada/rtems.ads	(revision 8294a5d9f660865776742c5f9f418bab7a99170b)
@@ -19,5 +19,5 @@
 --  http://www.rtems.com/license/LICENSE.
 --
---  rtems.ads,v 1.19.2.2 2003/11/25 14:07:32 joel Exp
+--  $Id$
 --
 
@@ -78,4 +78,5 @@
    False : constant RTEMS.Boolean := 0;
 
+   --
    --  More Types
    --
@@ -95,5 +96,4 @@
    subtype Device_Major_Number is RTEMS.Unsigned32;
    subtype Device_Minor_Number is RTEMS.Unsigned32;
-   subtype Vector_Number       is RTEMS.Unsigned32;
    subtype ISR_Level           is RTEMS.Unsigned32;
 
@@ -102,17 +102,15 @@
    --
    --  Task Related Types
-   --  XXXX fix this
+   --
+
    subtype Task_Argument       is RTEMS.Unsigned32;
    type Task_Argument_PTR      is access all Task_Argument;
 
-   -- XXXX fix this
+   type Task_Entry is access procedure (
+      Argument : RTEMS.Unsigned32
+   );
+
    subtype TCB                 is RTEMS.Unsigned32;
    type    TCB_Pointer         is access all RTEMS.TCB;
-
-   subtype Task_States         is RTEMS.Unsigned32;
-
-   type Task_Entry is access procedure (
-      Argument : RTEMS.Unsigned32
-   );
 
    --
@@ -141,43 +139,15 @@
       Clock_Get_Seconds_Since_Epoch,
       Clock_Get_Ticks_Since_Boot,
-      Clock_Get_Ticks_Per_Seconds,
+      Clock_Get_Ticks_Per_Second,
       Clock_Get_Time_Value
    );
 
-   --
-   --  Device Driver Entry Prototype
-   --
-
-   type Device_Driver_Entry is access function (
-      Major    : in     RTEMS.Device_Major_Number;
-      Minor    : in     RTEMS.Device_Major_Number;
-      Argument : in     RTEMS.Unsigned32;
-      ID       : in     RTEMS.Unsigned32
-   ) return RTEMS.Unsigned32;
-
-   type Driver_Address_Table_Entry is
-      record
-         Initialization : RTEMS.Device_Driver_Entry;
-         Open           : RTEMS.Device_Driver_Entry;
-         Close          : RTEMS.Device_Driver_Entry;
-         Read           : RTEMS.Device_Driver_Entry;
-         Write          : RTEMS.Device_Driver_Entry;
-         Control        : RTEMS.Device_Driver_Entry;
-      end record;
-
-   type Driver_Address_Table is array ( RTEMS.Unsigned32
-     range 1 .. RTEMS.Unsigned32'Last ) of RTEMS.Driver_Address_Table_Entry;
-
-   type Driver_Address_Table_Pointer is access all Driver_Address_Table;
-
-   type Driver_Name_t is
-      record
-         Device_Name        : RTEMS.Address;
-         Device_Name_Length : RTEMS.Unsigned32;
-         Major              : RTEMS.Device_Major_Number;
-         Minor              : RTEMS.Device_Minor_Number;
-      end record;
-
-   type Driver_Name_t_Pointer is access all Driver_Name_t;
+   type Time_T is new Interfaces.C.Long;
+
+   type Timespec is record
+      TV_Sec  : Time_T;
+      TV_Nsec : Interfaces.C.Long;
+   end record;
+   pragma Convention (C, Timespec);
 
    --
@@ -249,5 +219,4 @@
    Minimum_Stack_Size : RTEMS.Unsigned32;
    pragma Import (C, Minimum_Stack_Size, "rtems_minimum_stack_size");
-
 
    --
@@ -283,13 +252,12 @@
    No_Priority      : constant RTEMS.Task_Priority := 0;
 
-
    --
    --  Extension Callouts and Table
    --
 
-   type Thread_Create_Extension is access procedure (
+   type Thread_Create_Extension is access function (
       Current_Task : in     RTEMS.TCB_Pointer;
       New_Task     : in     RTEMS.TCB_Pointer
-   );
+   ) return RTEMS.Boolean;
 
    type Thread_Start_Extension is access procedure (
@@ -540,13 +508,4 @@
 
    --
-   --  For now, do not provide access to the CPU Table from Ada.
-   --  When this type is provided, a CPU dependent file must
-   --  define it.
-   --
-
-   subtype CPU_Table is RTEMS.Address;
-   type CPU_Table_Pointer is access all CPU_Table;
-
-   --
    --  Utility Functions
    --
@@ -613,7 +572,16 @@
       Right  : in     RTEMS.Address
    ) return Standard.Boolean;
+
+
    --
    --  RTEMS API
    --
+
+   --
+   --  Initialization Manager -- Shutdown Only
+   --
+   procedure Shutdown_Executive (
+      Status : in     RTEMS.Unsigned32
+   );
 
    --
@@ -666,4 +634,9 @@
    );
 
+   procedure Task_Is_Suspended (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
+
    procedure Task_Set_Priority (
       ID           : in     RTEMS.ID;
@@ -698,23 +671,23 @@
    );
 
---   procedure Task_Variable_Add (
---      ID            : in     RTEMS.ID;
---      Task_Variable : in     RTEMS.Address;
---      Dtor          : in     RTEMS.Task_Variable_Dtor;
---      Result        :    out RTEMS.Status_Codes
---   );
-
---   procedure Task_Variable_Get (
---      ID                  : in     RTEMS.ID;
---      Task_Variable       :    out RTEMS.Address;
---      Task_Variable_Value :    out RTEMS.Address;
---      Result              :    out RTEMS.Status_Codes
---   );
-
---   procedure Task_Variable_Delete (
---      ID                  : in     RTEMS.ID;
---      Task_Variable       :    out RTEMS.Address;
---      Result              :    out RTEMS.Status_Codes
---   );
+   procedure Task_Variable_Add (
+      ID            : in     RTEMS.ID;
+      Task_Variable : in     RTEMS.Address;
+      Dtor          : in     RTEMS.Task_Variable_Dtor;
+      Result        :    out RTEMS.Status_Codes
+   );
+
+   procedure Task_Variable_Get (
+      ID                  : in     RTEMS.ID;
+      Task_Variable       :    out RTEMS.Address;
+      Task_Variable_Value :    out RTEMS.Address;
+      Result              :    out RTEMS.Status_Codes
+   );
+
+   procedure Task_Variable_Delete (
+      ID                  : in     RTEMS.ID;
+      Task_Variable       :    out RTEMS.Address;
+      Result              :    out RTEMS.Status_Codes
+   );
 
    procedure Task_Wake_When (
@@ -731,11 +704,4 @@
    --  Interrupt Manager
    --
-
-   procedure Interrupt_Catch (
-      New_ISR_Handler : in     RTEMS.Address;
-      Vector          : in     RTEMS.Vector_Number;
-      Old_ISR_Handler :    out RTEMS.Address;
-      Result          :    out RTEMS.Status_Codes
-   );
 
    function Interrupt_Disable return RTEMS.ISR_Level;
@@ -764,4 +730,9 @@
    --
 
+   procedure Clock_Set (
+      Time_Buffer : in     RTEMS.Time_Of_Day;
+      Result      :    out RTEMS.Status_Codes
+   );
+
    procedure Clock_Get (
       Option      : in     RTEMS.Clock_Get_Options;
@@ -770,7 +741,7 @@
    );
 
-   procedure Clock_Set (
-      Time_Buffer : in     RTEMS.Time_Of_Day;
-      Result      :    out RTEMS.Status_Codes
+   procedure Clock_Get_Uptime (
+      Uptime :    out RTEMS.Timespec;
+      Result :    out RTEMS.Status_Codes
    );
 
@@ -800,5 +771,4 @@
       Result :    out RTEMS.Status_Codes
    );
-
 
    --
@@ -909,4 +879,8 @@
    );
 
+   procedure Semaphore_Flush (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
 
    --
@@ -966,4 +940,10 @@
    );
 
+   procedure Message_Queue_Get_Number_Pending (
+      ID     : in     RTEMS.ID;
+      Count  :    out RTEMS.Unsigned32;
+      Result :    out RTEMS.Status_Codes
+   );
+
    procedure Message_Queue_Flush (
       ID     : in     RTEMS.ID;
@@ -971,5 +951,4 @@
       Result :    out RTEMS.Status_Codes
    );
-
 
    --
@@ -1006,5 +985,4 @@
       Result     :    out RTEMS.Status_Codes
    );
-
 
    --
@@ -1046,5 +1024,4 @@
    );
 
-
    --
    --  Region Manager
@@ -1101,4 +1078,11 @@
    );
 
+   procedure Region_Resize_Segment (
+      ID         : in     RTEMS.ID;
+      Segment    : in     RTEMS.Address;
+      Size       : in     RTEMS.Unsigned32;
+      Old_Size   :    out RTEMS.Unsigned32;
+      Result     :    out RTEMS.Status_Codes
+   );
 
    --
@@ -1141,57 +1125,4 @@
 
    --
-   --  Input/Output Manager
-   --
-
-   procedure IO_Register_Name (
-      Name   : in     String;
-      Major  : in     RTEMS.Device_Major_Number;
-      Minor  : in     RTEMS.Device_Minor_Number;
-      Result :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Lookup_Name (
-      Name         : in     String;
-      Device_Info  : In     RTEMS.Driver_Name_t_Pointer;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Open (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Close (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Read (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Write (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-   procedure IO_Control (
-      Major        : in     RTEMS.Device_Major_Number;
-      Minor        : in     RTEMS.Device_Minor_Number;
-      Argument     : in     RTEMS.Address;
-      Result       :    out RTEMS.Status_Codes
-   );
-
-
-   --
    --  Fatal Error Manager
    --
@@ -1200,5 +1131,4 @@
       The_Error : in     RTEMS.Unsigned32
    );
-
 
    --
@@ -1240,4 +1170,81 @@
    );
 
+   procedure Rate_Monotonic_Reset_Statistics (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
+
+   procedure Rate_Monotonic_Reset_All_Statistics;
+   pragma Import (
+      C,
+      Rate_Monotonic_Reset_All_Statistics,
+      "rtems_rate_monotonic_reset_all_statistics"
+   );
+
+   procedure Rate_Monotonic_Report_Statistics;
+   pragma Import (
+      C,
+      Rate_Monotonic_Report_Statistics,
+      "rtems_rate_monotonic_report_statistics"
+   );
+
+   --
+   --  Barrier Manager
+   --
+
+   procedure Barrier_Create (
+      Name            : in     RTEMS.Name;
+      Attribute_Set   : in     RTEMS.Attribute;
+      Maximum_Waiters : in     RTEMS.Unsigned32;
+      ID              :    out RTEMS.ID;
+      Result          :    out RTEMS.Status_Codes
+   );
+
+   procedure Barrier_Ident (
+      Name   : in     RTEMS.Name;
+      ID     :    out RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
+
+   procedure Barrier_Delete (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
+
+   procedure Barrier_Wait (
+      ID         : in     RTEMS.ID;
+      Option_Set : in     RTEMS.Option;
+      Timeout    : in     RTEMS.Interval;
+      Result     :    out RTEMS.Status_Codes
+   );
+
+   procedure Barrier_Release (
+      ID     : in     RTEMS.ID;
+      Result :    out RTEMS.Status_Codes
+   );
+
+   --
+   --  Stack Bounds Checker
+   --
+
+   function Stack_Checker_Is_Blown return RTEMS.Boolean;
+   pragma Interface (C, Stack_Checker_Is_Blown);
+   pragma Interface_Name
+     (Interrupt_Is_In_Progress, "rtems_stack_checker_is_blown");
+
+   procedure Stack_Checker_Report_Usage;
+   pragma Import (
+      C, Stack_Checker_Report_Usage, "rtems_stack_checker_report_usage"
+   );
+
+   --
+   --  CPU Usage Statistics
+   --
+
+   procedure CPU_Usage_Report;
+   pragma Import (C, CPU_Usage_Report, "rtems_cpu_usage_report");
+
+   procedure CPU_Usage_Reset;
+   pragma Import (C, CPU_Usage_Reset, "rtems_cpu_usage_reset");
 
    --
