Files
open_kernel/abi/agila_abi.adb
T

45 lines
1.6 KiB
Ada

with Agila_Ports;
package body Agila_ABI is
State : Agila_Ports.Manager;
function Create (Owner : Word) return Word is
Handle : Word;
Result : Agila_Ports.Status;
begin
Agila_Ports.Create (State, Owner, Handle, Result);
return Handle;
end Create;
function Allow_Sender (Handle, Owner, Sender : Word) return Code is
Result : Agila_Ports.Status;
begin
Agila_Ports.Allow_Sender (State, Handle, Owner, Sender, Result);
return Agila_Ports.Status'Pos (Result);
end Allow_Sender;
function Revoke_Sender (Handle, Owner, Sender : Word) return Code is
Result : Agila_Ports.Status;
begin
Agila_Ports.Revoke_Sender (State, Handle, Owner, Sender, Result);
return Agila_Ports.Status'Pos (Result);
end Revoke_Sender;
function Send (Handle, Caller, Value : Word) return Code is
Result : Agila_Ports.Status;
begin
Agila_Ports.Send (State, Handle, Caller, Value, Result);
return Agila_Ports.Status'Pos (Result);
end Send;
function Receive (Handle, Caller : Word; Value : access Word) return Code is
Item : Agila_Ports.Message;
Result : Agila_Ports.Status;
begin
if Value = null then return Agila_Ports.Status'Pos (Agila_Ports.Invalid_Argument); end if;
Agila_Ports.Receive (State, Handle, Caller, Item, Result);
Value.all := Item.Value;
return Agila_Ports.Status'Pos (Result);
end Receive;
function Close (Handle, Caller : Word) return Code is
Result : Agila_Ports.Status;
begin
Agila_Ports.Close (State, Handle, Caller, Result);
return Agila_Ports.Status'Pos (Result);
end Close;
end Agila_ABI;