--- /dev/null 2012-01-30 20:41:15.189616186 +0100 +++ ./src/gcc/ada/s-osinte-gnu.adb 2012-04-11 22:56:06.000000000 +0200 @@ -0,0 +1,231 @@ +------------------------------------------------------------------------------ +-- -- +-- 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) 1991-1994, Florida State University -- +-- Copyright (C) 1995-2006, AdaCore -- +-- -- +-- GNARL 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 2, or (at your option) any later ver- -- +-- sion. GNARL 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. See the GNU General Public License -- +-- for more details. You should have received a copy of the GNU General -- +-- Public License distributed with GNARL; see file COPYING. If not, write -- +-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, -- +-- Boston, MA 02110-1301, USA. -- +-- -- +-- As a special exception, if other files instantiate generics from this -- +-- unit, or you link this unit with other files to produce an executable, -- +-- this unit does not by itself cause the resulting executable to be -- +-- covered by the GNU General Public License. This exception does not -- +-- however invalidate any other reasons why the executable file might be -- +-- covered by the GNU Public License. -- +-- -- +-- 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_setprotocol -- + ----------------------------------- + + function pthread_mutexattr_setprotocol + (attr : access pthread_mutexattr_t; + protocol : int) return int is + pragma Unreferenced (attr, protocol); + begin + return 0; + end pthread_mutexattr_setprotocol; + + ----------------------------------- + -- pthread_mutexattr_getprotocol -- + ----------------------------------- + + function pthread_mutexattr_getprotocol + (attr : access pthread_mutexattr_t; + protocol : access int) return int is + pragma Unreferenced (attr, protocol); + begin + return 0; + end pthread_mutexattr_getprotocol; + + -------------------------------------- + -- 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; + + --------------------------- + -- pthread_attr_setscope -- + --------------------------- + + function pthread_attr_setscope + (attr : access pthread_attr_t; + contentionscope : int) return int is + pragma Unreferenced (attr, contentionscope); + begin + return 0; + end pthread_attr_setscope; + + --------------------------- + -- pthread_attr_setscope -- + --------------------------- + + function pthread_attr_getscope + (attr : access pthread_attr_t; + contentionscope : access int) return int is + pragma Unreferenced (attr, contentionscope); + begin + return 0; + end pthread_attr_getscope; + + ---------------------------------- + -- pthread_attr_setinheritsched -- + ---------------------------------- + + function pthread_attr_setinheritsched + (attr : access pthread_attr_t; + inheritsched : int) return int is + pragma Unreferenced (attr, inheritsched); + begin + return 0; + end pthread_attr_setinheritsched; + + ---------------------------------- + -- pthread_attr_getinheritsched -- + ---------------------------------- + + function pthread_attr_getinheritsched + (attr : access pthread_attr_t; + inheritsched : access int) return int is + pragma Unreferenced (attr, inheritsched); + begin + return 0; + end pthread_attr_getinheritsched; + + ---------------------------------- + -- pthread_attr_getinheritsched -- + ---------------------------------- + + function pthread_attr_setschedpolicy + (attr : access pthread_attr_t; + policy : int) return int is + pragma Unreferenced (attr, policy); + begin + return 0; + end pthread_attr_setschedpolicy; + + ----------------- + -- 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;