function To_thread_t is new Ada.Unchecked_Conversion (Integer, thread_t);
- subtype mutex_t is System.OS_Lock.mutex_t;
+ subtype mutex_t is System.OS_Locks.mutex_t;
type cond_t is limited private;
P := Self_ID.Common.LL.Locks;
if P /= null then
- L.Next := P;
+ L.Next := To_RTS_Lock_Ptr (P);
end if;
Self_ID.Common.LL.Locking := null;
Self_ID.Common.LL.L.Owner := null;
P := Self_ID.Common.LL.Locks;
- Self_ID.Common.LL.Locks := Self_ID.Common.LL.Locks.Next;
+ Self_ID.Common.LL.Locks := To_Lock_Ptr (Self_ID.Common.LL.Locks.Next);
P.Next := null;
return True;
end Check_Sleep;
P := Self_ID.Common.LL.Locks;
if P /= null then
- L.Next := P;
+ L.Next := To_RTS_Lock_Ptr (P);
end if;
Self_ID.Common.LL.Locking := null;
L.Owner := null;
P := Self_ID.Common.LL.Locks;
- Self_ID.Common.LL.Locks := Self_ID.Common.LL.Locks.Next;
+ Self_ID.Common.LL.Locks := To_Lock_Ptr (Self_ID.Common.LL.Locks.Next);
P.Next := null;
return True;
end Check_Unlock;
procedure Initialize_RTS_Lock (Addr : Address) is
Lock : aliased SOL.RTS_Lock;
for Lock'Address use Addr;
+ pragma Import (Ada, Lock);
begin
Initialize_Lock (Lock'Unchecked_Access, PO_Level);
procedure Finalize_RTS_Lock (Addr : Address) is
Lock : aliased SOL.RTS_Lock;
for Lock'Address use Addr;
+ pragma Import (Ada, Lock);
begin
Finalize_Lock (Lock'Unchecked_Access);
procedure Acquire_RTS_Lock (Addr : Address) is
Lock : aliased SOL.RTS_Lock;
for Lock'Address use Addr;
+ pragma Import (Ada, Lock);
begin
Write_Lock (Lock'Unchecked_Access);
procedure Release_RTS_Lock (Addr : Address) is
Lock : aliased SOL.RTS_Lock;
for Lock'Address use Addr;
+ pragma Import (Ada, Lock);
begin
Unlock (Lock'Unchecked_Access);
function To_Lock_Ptr is
new Ada.Unchecked_Conversion (OS_Locks.RTS_Lock_Ptr, Lock_Ptr);
+ function To_RTS_Lock_Ptr is
+ new Ada.Unchecked_Conversion (Lock_Ptr, OS_Locks.RTS_Lock_Ptr);
type Suspension_Object is limited private;
-- Should be used for the implementation of Ada.Synchronous_Task_Control
-- This is a Solaris (native) version of this package
+with Ada.Unchecked_Conversion;
with Interfaces.C;
package System.OS_Locks is
private
- type array_type_9 is array (0 .. 3) of unsigned_char;
+ type array_type_9 is array (0 .. 3) of Interfaces.C.unsigned_char;
type record_type_3 is record
flag : array_type_9;
- Xtype : unsigned_long;
+ Xtype : Interfaces.C.unsigned_long;
end record;
pragma Convention (C, record_type_3);
lock : upad64_t;
data : upad64_t;
end record;
- pragma Convention (C, mutex_t);
+ pragma Convention (C, mutex_t);
end System.OS_Locks;