-- S p e c --
-- --
-- Copyright (C) 1991-1994, Florida State University --
--- Copyright (C) 1995-2005, Free Software Foundation, Inc. --
+-- Copyright (C) 1995-2009, Free Software Foundation, Inc. --
-- --
-- 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- --
-- This is a Solaris (native) version of this package
-- This package includes all direct interfaces to OS services
--- that are needed by children of System.
+-- that are needed by the tasking run-time (libgnarl).
-- PLEASE DO NOT add any with-clauses to this package or remove the pragma
-- Preelaborate. This package is designed to be a bottom-level (leaf) package.
with Interfaces.C;
-with Unchecked_Conversion;
+
+with Ada.Unchecked_Conversion;
package System.OS_Interface is
pragma Preelaborate;
Unmasked : constant Signal_Set := (SIGTRAP, SIGLWP, SIGPROF);
-- Following signals should not be disturbed.
- -- See c-posix-signals.c in FLORIST
+ -- See c-posix-signals.c in FLORIST.
Reserved : constant Signal_Set :=
(SIGKILL, SIGSTOP, SIGWAITING, SIGCANCEL, SIGTRAP, SIGSEGV);
-- More analysis is needed, after which these declarations may need to
-- be changed.
- FPE_INTDIV : constant := 1; -- integer divide by zero
- FPE_INTOVF : constant := 2; -- integer overflow
- FPE_FLTDIV : constant := 3; -- floating point divide by zero
- FPE_FLTOVF : constant := 4; -- floating point overflow
- FPE_FLTUND : constant := 5; -- floating point underflow
- FPE_FLTRES : constant := 6; -- floating point inexact result
- FPE_FLTINV : constant := 7; -- invalid floating point operation
- FPE_FLTSUB : constant := 8; -- subscript out of range
-
type greg_t is new int;
type gregset_t is array (0 .. 18) of greg_t;
function To_Timespec (D : Duration) return timespec;
pragma Inline (To_Timespec);
- type struct_timeval is private;
- -- This is needed on systems that do not have clock_gettime()
- -- but do have gettimeofday().
-
- function To_Duration (TV : struct_timeval) return Duration;
- pragma Inline (To_Duration);
-
- function To_Timeval (D : Duration) return struct_timeval;
- pragma Inline (To_Timeval);
-
-------------
-- Process --
-------------
type Thread_Body is access
function (arg : System.Address) return System.Address;
+ pragma Convention (C, Thread_Body);
function Thread_Body_Access is new
- Unchecked_Conversion (System.Address, Thread_Body);
+ Ada.Unchecked_Conversion (System.Address, Thread_Body);
THR_DETACHED : constant := 64;
THR_BOUND : constant := 1;
subtype Thread_Id is thread_t;
-- These types should be commented ???
- function To_thread_t is new Unchecked_Conversion (Integer, thread_t);
+ function To_thread_t is new Ada.Unchecked_Conversion (Integer, thread_t);
type mutex_t is limited private;
function thr_kill (thread : thread_t; sig : Signal) return int;
pragma Import (C, thr_kill, "thr_kill");
- type sigset_t_ptr is access all sigset_t;
-
function thr_sigsetmask
(how : int;
- set : sigset_t_ptr;
- oset : sigset_t_ptr) return int;
+ set : access sigset_t;
+ oset : access sigset_t) return int;
pragma Import (C, thr_sigsetmask, "thr_sigsetmask");
function pthread_sigmask
(how : int;
- set : sigset_t_ptr;
- oset : sigset_t_ptr) return int;
+ set : access sigset_t;
+ oset : access sigset_t) return int;
pragma Import (C, pthread_sigmask, "thr_sigsetmask");
function thr_suspend (target_thread : thread_t) return int;
type id_t is new long;
P_MYID : constant := -1;
- -- the specified LWP or process is the current one.
+ -- The specified LWP or process is the current one
type struct_pcinfo is record
pc_cid : id_t;
-- Constants for function processor_bind
PBIND_QUERY : constant processorid_t := -2;
- -- the processor bindings are not changed.
+ -- The processor bindings are not changed
PBIND_NONE : constant processorid_t := -1;
- -- the processor bindings of the specified LWPs are cleared.
+ -- The processor bindings of the specified LWPs are cleared
-- Flags for function p_online
PR_OFFLINE : constant int := 1;
- -- processor is offline, as quiet as possible
+ -- Processor is offline, as quiet as possible
PR_ONLINE : constant int := 2;
- -- processor online
+ -- Processor online
PR_STATUS : constant int := 3;
- -- value passed to p_online to request status
+ -- Value passed to p_online to request status
function p_online (processorid : processorid_t; flag : int) return int;
pragma Import (C, p_online, "p_online");
pragma Import (C, processor_bind, "processor_bind");
procedure pthread_init;
- -- dummy procedure to share s-intman.adb with other Solaris targets.
+ -- Dummy procedure to share s-intman.adb with other Solaris targets
private
type clockid_t is new int;
CLOCK_REALTIME : constant clockid_t := 0;
- type struct_timeval is record
- tv_sec : long;
- tv_usec : long;
- end record;
- pragma Convention (C, struct_timeval);
-
type array_type_9 is array (0 .. 3) of unsigned_char;
type record_type_3 is record
flag : array_type_9;