diff options
author | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2017-09-13 10:33:47 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2017-09-13 10:33:47 +0000 |
commit | 5067f3a0041a89b3200d70053923ffd84346b0f0 (patch) | |
tree | 9e7a255dce1e4de7aef3ad036f3ae0dff43d912b /gcc/ada/libgnarl/s-tpopsp__vxworks.adb | |
parent | 231bba8d5c46680281fd3163acb33a961252d56a (diff) | |
download | gcc-5067f3a0041a89b3200d70053923ffd84346b0f0.zip gcc-5067f3a0041a89b3200d70053923ffd84346b0f0.tar.gz gcc-5067f3a0041a89b3200d70053923ffd84346b0f0.tar.bz2 |
[multiple changes]
2017-09-13 Eric Botcazou <ebotcazou@adacore.com>
* sem_ch13.adb (Register_Address_Clause_Check): New procedure to save
the suppression status of Alignment_Check on the current scope.
(Alignment_Checks_Suppressed): New function to use the saved instead of
the current suppression status of Alignment_Check.
(Address_Clause_Check_Record): Add Alignment_Checks_Suppressed field.
(Analyze_Attribute_Definition_Clause): Instead of manually appending to
the table, call Register_Address_Clause_Check.
(Validate_Address_Clauses): Call Alignment_Checks_Suppressed on the
recorded address clause instead of its entity.
2017-09-13 Jerome Guitton <guitton@adacore.com>
* libgnarl/s-tpopsp__vxworks-tls.adb,
libgnarl/s-tpopsp__vxworks-rtp.adb, libgnarl/s-tpopsp__vxworks.adb
(Self): Register thread if task id is null.
2017-09-13 Arnaud Charlet <charlet@adacore.com>
* libgnat/s-htable.adb, libgnat/s-htable.ads: Minor style tuning.
2017-09-13 Arnaud Charlet <charlet@adacore.com>
* lib-xref-spark_specific.adb (Scopes): simplify hash map; now it maps
from an entity to only scope index, as a mapping from an entity to the
same entity was useless.
(Get_Scope_Num): refactor as a simple renaming; rename parameter from N
to E.
(Set_Scope_Num): refactor as a simple renaming; rename parameter from N
to E.
(Is_Constant_Object_Without_Variable_Input): remove local "Result"
variable, just use return statements.
From-SVN: r252076
Diffstat (limited to 'gcc/ada/libgnarl/s-tpopsp__vxworks.adb')
-rw-r--r-- | gcc/ada/libgnarl/s-tpopsp__vxworks.adb | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb index bc343b1..bd8f92d 100644 --- a/gcc/ada/libgnarl/s-tpopsp__vxworks.adb +++ b/gcc/ada/libgnarl/s-tpopsp__vxworks.adb @@ -121,9 +121,29 @@ package body Specific is -- Self -- ---------- + -- To make Ada tasks and C threads interoperate better, we have added some + -- functionality to Self. Suppose a C main program (with threads) calls an + -- Ada procedure and the Ada procedure calls the tasking runtime system. + -- Eventually, a call will be made to self. Since the call is not coming + -- from an Ada task, there will be no corresponding ATCB. + + -- What we do in Self is to catch references that do not come from + -- recognized Ada tasks, and create an ATCB for the calling thread. + + -- The new ATCB will be "detached" from the normal Ada task master + -- hierarchy, much like the existing implicitly created signal-server + -- tasks. + function Self return Task_Id is + Result : constant Task_Id := To_Task_Id (ATCB_Key); begin - return To_Task_Id (ATCB_Key); + if Result /= null then + return Result; + else + -- If the value is Null then it is a non-Ada task + + return Register_Foreign_Thread; + end if; end Self; end Specific; |