diff options
author | Svante Signell <svante.signell@gmail.com> | 2016-04-27 07:38:41 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2016-04-27 07:38:41 +0000 |
commit | 1ee806d8d759be9c7326ce55b472f326089b47f0 (patch) | |
tree | 56feb5162cf8eb96567b69a67d02eaa90ec07bd4 /gcc | |
parent | c47194d2ab2e3ce6c760ea44de3ec00bf18976ee (diff) | |
download | gcc-1ee806d8d759be9c7326ce55b472f326089b47f0.zip gcc-1ee806d8d759be9c7326ce55b472f326089b47f0.tar.gz gcc-1ee806d8d759be9c7326ce55b472f326089b47f0.tar.bz2 |
Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
* gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
* s-osinte-gnu.ads: Small tweaks.
* s-osinte-gnu.adb: New file.
From-SVN: r235467
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/ada/gcc-interface/Makefile.in | 2 | ||||
-rw-r--r-- | gcc/ada/s-osinte-gnu.adb | 144 | ||||
-rw-r--r-- | gcc/ada/s-osinte-gnu.ads | 14 |
4 files changed, 158 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0051dbd..1c41831 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2016-04-27 Svante Signell <svante.signell@gmail.com> + + * gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb. + * s-osinte-gnu.ads: Small tweaks. + * s-osinte-gnu.adb: New file. + 2016-04-21 Hristian Kirtchev <kirtchev@adacore.com> * sem_prag.adb (Match_Constituent): Treat a constant as a legal diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in index bfc718b..d9ede9f 100644 --- a/gcc/ada/gcc-interface/Makefile.in +++ b/gcc/ada/gcc-interface/Makefile.in @@ -1426,7 +1426,7 @@ ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os a-intnam.ads<a-intnam-freebsd.ads \ s-inmaop.adb<s-inmaop-posix.adb \ s-intman.adb<s-intman-posix.adb \ - s-osinte.adb<s-osinte-posix.adb \ + s-osinte.adb<s-osinte-gnu.adb \ s-osinte.ads<s-osinte-gnu.ads \ s-osprim.adb<s-osprim-posix.adb \ s-taprop.adb<s-taprop-posix.adb \ diff --git a/gcc/ada/s-osinte-gnu.adb b/gcc/ada/s-osinte-gnu.adb new file mode 100644 index 0000000..fb099ac --- /dev/null +++ b/gcc/ada/s-osinte-gnu.adb @@ -0,0 +1,144 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- +-- -- +-- S Y S T E M . O S _ I N T E R F A C E -- +-- -- +-- B o d y -- +-- -- +-- Copyright (C) 2015-2016, Free Software Foundation, Inc. -- +-- -- +-- GNAT is free software; you can redistribute it and/or modify it under -- +-- terms of the GNU General Public License as published by the Free Soft- -- +-- ware Foundation; either version 3, or (at your option) any later ver- -- +-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +-- or FITNESS FOR A PARTICULAR PURPOSE. -- +-- -- +-- As a special exception under Section 7 of GPL version 3, you are granted -- +-- additional permissions described in the GCC Runtime Library Exception, -- +-- version 3.1, as published by the Free Software Foundation. -- +-- -- +-- You should have received a copy of the GNU General Public License and -- +-- a copy of the GCC Runtime Library Exception along with this program; -- +-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +-- <http://www.gnu.org/licenses/>. -- +-- -- +-- GNARL was developed by the GNARL team at Florida State University. -- +-- Extensive contributions were provided by Ada Core Technologies, Inc. -- +-- -- +------------------------------------------------------------------------------ + +-- This is the GNU/Hurd version of this package. + +pragma Polling (Off); +-- Turn off polling, we do not want ATC polling to take place during +-- tasking operations. It causes infinite loops and other problems. + +-- This package encapsulates all direct interfaces to OS services +-- that are needed by children of System. + +package body System.OS_Interface is + + -------------------- + -- Get_Stack_Base -- + -------------------- + + function Get_Stack_Base (thread : pthread_t) return Address is + pragma Warnings (Off, thread); + + begin + return Null_Address; + end Get_Stack_Base; + + ------------------ + -- pthread_init -- + ------------------ + + procedure pthread_init is + begin + null; + end pthread_init; + + -------------------------------------- + -- pthread_mutexattr_setprioceiling -- + -------------------------------------- + + function pthread_mutexattr_setprioceiling + (attr : access pthread_mutexattr_t; + prioceiling : int) return int is + pragma Unreferenced (attr, prioceiling); + begin + return 0; + end pthread_mutexattr_setprioceiling; + + -------------------------------------- + -- pthread_mutexattr_getprioceiling -- + -------------------------------------- + + function pthread_mutexattr_getprioceiling + (attr : access pthread_mutexattr_t; + prioceiling : access int) return int is + pragma Unreferenced (attr, prioceiling); + begin + return 0; + end pthread_mutexattr_getprioceiling; + + --------------------------- + -- pthread_setschedparam -- + --------------------------- + + function pthread_setschedparam + (thread : pthread_t; + policy : int; + param : access struct_sched_param) return int is + pragma Unreferenced (thread, policy, param); + begin + return 0; + end pthread_setschedparam; + + ----------------- + -- To_Duration -- + ----------------- + + function To_Duration (TS : timespec) return Duration is + begin + return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; + end To_Duration; + + ------------------------ + -- To_Target_Priority -- + ------------------------ + + function To_Target_Priority + (Prio : System.Any_Priority) return Interfaces.C.int + is + begin + return Interfaces.C.int (Prio); + end To_Target_Priority; + + ----------------- + -- To_Timespec -- + ----------------- + + function To_Timespec (D : Duration) return timespec is + S : time_t; + F : Duration; + + begin + S := time_t (Long_Long_Integer (D)); + F := D - Duration (S); + + -- If F has negative value due to a round-up, adjust for positive F + -- value. + + if F < 0.0 then + S := S - 1; + F := F + 1.0; + end if; + + return timespec'(tv_sec => S, + tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); + end To_Timespec; + +end System.OS_Interface; diff --git a/gcc/ada/s-osinte-gnu.ads b/gcc/ada/s-osinte-gnu.ads index b3397c1..6cac9b9 100644 --- a/gcc/ada/s-osinte-gnu.ads +++ b/gcc/ada/s-osinte-gnu.ads @@ -344,8 +344,9 @@ package System.OS_Interface is -- returns the stack base of the specified thread. Only call this function -- when Stack_Base_Available is True. - -- From: /usr/include/unistd.h __getpagesize or getpagesize?? - function Get_Page_Size return int; + -- From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize?? + function Get_Page_Size return size_t; + function Get_Page_Size return Address; pragma Import (C, Get_Page_Size, "__getpagesize"); -- Returns the size of a page @@ -498,7 +499,11 @@ package System.OS_Interface is PTHREAD_PRIO_PROTECT : constant := 2; PTHREAD_PRIO_INHERIT : constant := 1; + -- GNU/Hurd does not support Thread Priority Protection or Thread + -- Priority Inheritance and lacks some pthread_mutexattr_* functions. + -- Replace them with dummy versions. -- From: /usr/include/pthread/pthread.h + function pthread_mutexattr_setprotocol (attr : access pthread_mutexattr_t; protocol : int) return int; @@ -514,14 +519,10 @@ package System.OS_Interface is function pthread_mutexattr_setprioceiling (attr : access pthread_mutexattr_t; prioceiling : int) return int; - pragma Import (C, pthread_mutexattr_setprioceiling, - "pthread_mutexattr_setprioceiling"); function pthread_mutexattr_getprioceiling (attr : access pthread_mutexattr_t; prioceiling : access int) return int; - pragma Import (C, pthread_mutexattr_getprioceiling, - "pthread_mutexattr_getprioceiling"); type struct_sched_param is record sched_priority : int; -- scheduling priority @@ -532,7 +533,6 @@ package System.OS_Interface is (thread : pthread_t; policy : int; param : access struct_sched_param) return int; - pragma Import (C, pthread_setschedparam, "pthread_setschedparam"); function pthread_attr_setscope (attr : access pthread_attr_t; |