diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-02-16 15:52:29 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-02-16 15:52:29 +0000 |
commit | 19870208342778aecf570dfe008aa2747c46110e (patch) | |
tree | 48f0cc573732a4e8dddca3bdf91c3488d0b13649 /c/src/ada/rtems-tasks.adb | |
parent | 2011-02-16 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff) | |
download | rtems-19870208342778aecf570dfe008aa2747c46110e.tar.bz2 |
2011-02-16 Joel Sherrill <joel.sherrill@oarcorp.com>
* 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.
Diffstat (limited to 'c/src/ada/rtems-tasks.adb')
-rw-r--r-- | c/src/ada/rtems-tasks.adb | 339 |
1 files changed, 339 insertions, 0 deletions
diff --git a/c/src/ada/rtems-tasks.adb b/c/src/ada/rtems-tasks.adb new file mode 100644 index 0000000000..9c85920d16 --- /dev/null +++ b/c/src/ada/rtems-tasks.adb @@ -0,0 +1,339 @@ +-- +-- RTEMS / Body +-- +-- DESCRIPTION: +-- +-- This package provides the interface to the RTEMS API. +-- +-- +-- DEPENDENCIES: +-- +-- +-- +-- COPYRIGHT (c) 1997-2008. +-- On-Line Applications Research Corporation (OAR). +-- +-- The license and distribution terms for this file may in +-- the file LICENSE in this distribution or at +-- http://www.rtems.com/license/LICENSE. +-- +-- $Id$ +-- + +package body RTEMS.Tasks is + + -- + -- Task Manager + -- + + procedure Create + (Name : in RTEMS.Name; + Initial_Priority : in Priority; + Stack_Size : in RTEMS.Unsigned32; + Initial_Modes : in RTEMS.Mode; + Attribute_Set : in RTEMS.Attribute; + ID : out RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + function Create_Base + (Name : RTEMS.Name; + Initial_Priority : Priority; + Stack_Size : RTEMS.Unsigned32; + Initial_Modes : RTEMS.Mode; + Attribute_Set : RTEMS.Attribute; + ID : access RTEMS.ID) + return RTEMS.Status_Codes; + pragma Import (C, Create_Base, "rtems_task_create"); + ID_Base : aliased RTEMS.ID; + begin + Result := + Create_Base + (Name, + Initial_Priority, + Stack_Size, + Initial_Modes, + Attribute_Set, + ID_Base'Access); + ID := ID_Base; + end Create; + + procedure Ident + (Name : in RTEMS.Name; + Node : in RTEMS.Node; + ID : out RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + + function Ident_Base + (Name : RTEMS.Name; + Node : RTEMS.Node; + ID : access RTEMS.ID) + return RTEMS.Status_Codes; + pragma Import (C, Ident_Base, "rtems_task_ident"); + ID_Base : aliased RTEMS.ID; + + begin + + Result := Ident_Base (Name, Node, ID_Base'Access); + ID := ID_Base; + + end Ident; + + procedure Start + (ID : in RTEMS.ID; + Entry_Point : in RTEMS.Tasks.Entry_Point; + Argument : in RTEMS.Tasks.Argument; + Result : out RTEMS.Status_Codes) + is + function Start_Base + (ID : RTEMS.ID; + Entry_Point : RTEMS.Tasks.Entry_Point; + Argument : RTEMS.Tasks.Argument) + return RTEMS.Status_Codes; + pragma Import (C, Start_Base, "rtems_task_start"); + begin + + Result := Start_Base (ID, Entry_Point, Argument); + + end Start; + + procedure Restart + (ID : in RTEMS.ID; + Argument : in RTEMS.Tasks.Argument; + Result : out RTEMS.Status_Codes) + is + function Restart_Base + (ID : RTEMS.ID; + Argument : RTEMS.Tasks.Argument) + return RTEMS.Status_Codes; + pragma Import (C, Restart_Base, "rtems_task_restart"); + begin + + Result := Restart_Base (ID, Argument); + + end Restart; + + procedure Delete + (ID : in RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + function Delete_Base (ID : RTEMS.ID) return RTEMS.Status_Codes; + pragma Import (C, Delete_Base, "rtems_task_delete"); + begin + + Result := Delete_Base (ID); + + end Delete; + + procedure Suspend + (ID : in RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + function Suspend_Base (ID : RTEMS.ID) return RTEMS.Status_Codes; + pragma Import (C, Suspend_Base, "rtems_task_suspend"); + begin + + Result := Suspend_Base (ID); + + end Suspend; + + procedure Resume + (ID : in RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + function Resume_Base (ID : RTEMS.ID) return RTEMS.Status_Codes; + pragma Import (C, Resume_Base, "rtems_task_resume"); + begin + + Result := Resume_Base (ID); + + end Resume; + + procedure Is_Suspended + (ID : in RTEMS.ID; + Result : out RTEMS.Status_Codes) + is + function Is_Suspended_Base + (ID : RTEMS.ID) + return RTEMS.Status_Codes; + pragma Import (C, Is_Suspended_Base, "rtems_task_is_suspended"); + begin + + Result := Is_Suspended_Base (ID); + + end Is_Suspended; + + procedure Set_Priority + (ID : in RTEMS.ID; + New_Priority : in Priority; + Old_Priority : out Priority; + Result : out RTEMS.Status_Codes) + is + function Set_Priority_Base + (ID : RTEMS.ID; + New_Priority : Priority; + Old_Priority : access Priority) + return RTEMS.Status_Codes; + pragma Import (C, Set_Priority_Base, "rtems_task_set_priority"); + Old_Priority_Base : aliased Priority; + begin + + Result := + Set_Priority_Base (ID, New_Priority, Old_Priority_Base'Access); + Old_Priority := Old_Priority_Base; + + end Set_Priority; + + procedure Mode + (Mode_Set : in RTEMS.Mode; + Mask : in RTEMS.Mode; + Previous_Mode_Set : out RTEMS.Mode; + Result : out RTEMS.Status_Codes) + is + function Mode_Base + (Mode_Set : RTEMS.Mode; + Mask : RTEMS.Mode; + Previous_Mode_Set : access RTEMS.Mode) + return RTEMS.Status_Codes; + pragma Import (C, Mode_Base, "rtems_task_mode"); + Previous_Mode_Set_Base : aliased RTEMS.Mode; + begin + + Result := + Mode_Base (Mode_Set, Mask, Previous_Mode_Set_Base'Access); + Previous_Mode_Set := Previous_Mode_Set_Base; + + end Mode; + + procedure Get_Note + (ID : in RTEMS.ID; + Notepad : in RTEMS.Notepad_Index; + Note : out RTEMS.Unsigned32; + Result : out RTEMS.Status_Codes) + is + function Get_Note_Base + (ID : RTEMS.ID; + Notepad : RTEMS.Notepad_Index; + Note : access RTEMS.Unsigned32) + return RTEMS.Status_Codes; + pragma Import (C, Get_Note_Base, "rtems_task_get_note"); + Note_Base : aliased RTEMS.Unsigned32; + begin + + Result := Get_Note_Base (ID, Notepad, Note_Base'Access); + Note := Note_Base; + + end Get_Note; + + procedure Set_Note + (ID : in RTEMS.ID; + Notepad : in RTEMS.Notepad_Index; + Note : in RTEMS.Unsigned32; + Result : out RTEMS.Status_Codes) + is + function Set_Note_Base + (ID : RTEMS.ID; + Notepad : RTEMS.Notepad_Index; + Note : RTEMS.Unsigned32) + return RTEMS.Status_Codes; + pragma Import (C, Set_Note_Base, "rtems_task_set_note"); + begin + + Result := Set_Note_Base (ID, Notepad, Note); + + end Set_Note; + + procedure Variable_Add + (ID : in RTEMS.ID; + Task_Variable : in RTEMS.Address; + Dtor : in Variable_Dtor; + Result : out RTEMS.Status_Codes) + is + function Variable_Add_Base + (ID : RTEMS.ID; + Task_Variable : RTEMS.Address; + Dtor : Variable_Dtor) + return RTEMS.Status_Codes; + pragma Import (C, Variable_Add_Base, "rtems_task_variable_add"); + begin + + Result := Variable_Add_Base (ID, Task_Variable, Dtor); + + end Variable_Add; + + procedure Variable_Get + (ID : in RTEMS.ID; + Task_Variable : out RTEMS.Address; + Task_Variable_Value : out RTEMS.Address; + Result : out RTEMS.Status_Codes) + is + function Variable_Get_Base + (ID : RTEMS.ID; + Task_Variable : access RTEMS.Address; + Task_Variable_Value : access RTEMS.Address) + return RTEMS.Status_Codes; + pragma Import (C, Variable_Get_Base, "rtems_task_variable_get"); + Task_Variable_Base : aliased RTEMS.Address; + Task_Variable_Value_Base : aliased RTEMS.Address; + begin + + Result := + Variable_Get_Base + (ID, + Task_Variable_Base'Access, + Task_Variable_Value_Base'Access); + Task_Variable := Task_Variable_Base; + Task_Variable_Value := Task_Variable_Value_Base; + + end Variable_Get; + + procedure Variable_Delete + (ID : in RTEMS.ID; + Task_Variable : out RTEMS.Address; + Result : out RTEMS.Status_Codes) + is + function Variable_Delete_Base + (ID : RTEMS.ID; + Task_Variable : access RTEMS.Address) + return RTEMS.Status_Codes; + pragma Import + (C, + Variable_Delete_Base, + "rtems_task_variable_delete"); + Task_Variable_Base : aliased RTEMS.Address; + begin + + Result := Variable_Delete_Base (ID, Task_Variable_Base'Access); + Task_Variable := Task_Variable_Base; + + end Variable_Delete; + + procedure Wake_When + (Time_Buffer : in RTEMS.Time_Of_Day; + Result : out RTEMS.Status_Codes) + is + function Wake_When_Base + (Time_Buffer : RTEMS.Time_Of_Day) + return RTEMS.Status_Codes; + pragma Import (C, Wake_When_Base, "rtems_task_wake_when"); + begin + + Result := Wake_When_Base (Time_Buffer); + + end Wake_When; + + procedure Wake_After + (Ticks : in RTEMS.Interval; + Result : out RTEMS.Status_Codes) + is + function Wake_After_Base + (Ticks : RTEMS.Interval) + return RTEMS.Status_Codes; + pragma Import (C, Wake_After_Base, "rtems_task_wake_after"); + begin + + Result := Wake_After_Base (Ticks); + + end Wake_After; + +end RTEMS.Tasks; |