Commit 2ba1a7c7 by Arnaud Charlet

[multiple changes]

2011-09-02  Jose Ruiz  <ruiz@adacore.com>

	* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB,
	Initialize): Define and initialize the
	mutex attributes and condition variable attributes locally.

2011-09-02  Vincent Celier  <celier@adacore.com>

	* prj-nmsc.adb (Check_File): Mark as Locally_Removed a naming
	exception replaced in an extending project.
	(Check_Object): No error when the other source is locally removed.

2011-09-02  Yannick Moy  <moy@adacore.com>

	* exp_ch6.adb (Is_Build_In_Place_Function_Call): in Alfa mode, allow
	unresolved calls.

From-SVN: r178432
parent 8b875290
2011-09-02 Jose Ruiz <ruiz@adacore.com>
* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB,
Initialize): Define and initialize the
mutex attributes and condition variable attributes locally.
2011-09-02 Vincent Celier <celier@adacore.com>
* prj-nmsc.adb (Check_File): Mark as Locally_Removed a naming
exception replaced in an extending project.
(Check_Object): No error when the other source is locally removed.
2011-09-02 Yannick Moy <moy@adacore.com>
* exp_ch6.adb (Is_Build_In_Place_Function_Call): in Alfa mode, allow
unresolved calls.
2011-08-31 Arnaud Charlet <charlet@adacore.com>
* gcc-interface/Makefile.in: Clean up handling of x86 and x86-64
......
......@@ -6797,6 +6797,16 @@ package body Exp_Ch6 is
elsif Nkind (Name (Exp_Node)) = N_Explicit_Dereference then
Function_Id := Etype (Name (Exp_Node));
-- In Alfa mode, protected subprogram calls are not expanded, so that
-- we may end up with a call that is neither resolved to an entity,
-- nor an indirect call.
elsif Alfa_Mode then
return False;
else
raise Program_Error;
end if;
return Is_Build_In_Place_Function (Function_Id);
......
......@@ -7588,8 +7588,9 @@ package body Prj.Nmsc is
-- the same file it is expected that it has the same object)
if Source /= No_Source
and then Source.Replaced_By = No_Source
and then Source.Path /= Src.Path
and then Src.Project = Source.Project
and then Is_Extending (Src.Project, Source.Project)
then
Error_Msg_File_1 := Src.File;
Error_Msg_File_2 := Source.File;
......
......@@ -97,12 +97,6 @@ package body System.Task_Primitives.Operations is
Dispatching_Policy : Character;
pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
-- The following are effectively constants, but they need to be initialized
-- by calling a pthread_ function.
Mutex_Attr : aliased pthread_mutexattr_t;
Cond_Attr : aliased pthread_condattr_t;
Foreign_Task_Elaborated : aliased Boolean := True;
-- Used to identified fake tasks (i.e., non-Ada Threads)
......@@ -261,9 +255,13 @@ package body System.Task_Primitives.Operations is
is
pragma Unreferenced (Prio);
Mutex_Attr : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
begin
Result := pthread_mutexattr_init (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -279,9 +277,13 @@ package body System.Task_Primitives.Operations is
is
pragma Unreferenced (Level);
Mutex_Attr : aliased pthread_mutexattr_t;
Result : Interfaces.C.int;
begin
Result := pthread_mutexattr_init (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_init (L, Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -762,6 +764,8 @@ package body System.Task_Primitives.Operations is
--------------------
procedure Initialize_TCB (Self_ID : Task_Id; Succeeded : out Boolean) is
Mutex_Attr : aliased pthread_mutexattr_t;
Cond_Attr : aliased pthread_condattr_t;
Result : Interfaces.C.int;
begin
......@@ -774,6 +778,9 @@ package body System.Task_Primitives.Operations is
Self_ID.Common.LL.Thread := Null_Thread_Id;
if not Single_Lock then
Result := pthread_mutexattr_init (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_init (Self_ID.Common.LL.L'Access,
Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -784,6 +791,9 @@ package body System.Task_Primitives.Operations is
end if;
end if;
Result := pthread_condattr_init (Cond_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_cond_init (Self_ID.Common.LL.CV'Access,
Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -1027,6 +1037,8 @@ package body System.Task_Primitives.Operations is
----------------
procedure Initialize (S : in out Suspension_Object) is
Mutex_Attr : aliased pthread_mutexattr_t;
Cond_Attr : aliased pthread_condattr_t;
Result : Interfaces.C.int;
begin
......@@ -1037,6 +1049,9 @@ package body System.Task_Primitives.Operations is
-- Initialize internal mutex
Result := pthread_mutexattr_init (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_mutex_init (S.L'Access, Mutex_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -1047,6 +1062,9 @@ package body System.Task_Primitives.Operations is
-- Initialize internal condition variable
Result := pthread_condattr_init (Cond_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_cond_init (S.CV'Access, Cond_Attr'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......@@ -1340,12 +1358,6 @@ package body System.Task_Primitives.Operations is
end if;
end loop;
Result := pthread_mutexattr_init (Mutex_Attr'Access);
pragma Assert (Result = 0);
Result := pthread_condattr_init (Cond_Attr'Access);
pragma Assert (Result = 0);
Initialize_Lock (Single_RTS_Lock'Access, RTS_Lock_Level);
-- Initialize the global RTS lock
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment