OSDN Git Service

2003-12-11 Ed Falis <falis@gnat.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / 5oosinte.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                 GNU ADA RUN-TIME LIBRARY (GNARL) COMPONENTS              --
4 --                                                                          --
5 --                   S Y S T E M . O S _ I N T E R F A C E                  --
6 --                                                                          --
7 --                                  S p e c                                 --
8 --                                                                          --
9 --             Copyright (C) 1991-1994, Florida State University            --
10 --             Copyright (C) 1995-2003, Ada Core Technologies               --
11 --                                                                          --
12 -- GNARL is free software; you can  redistribute it  and/or modify it under --
13 -- terms of the  GNU General Public License as published  by the Free Soft- --
14 -- ware  Foundation;  either version 2,  or (at your option) any later ver- --
15 -- sion. GNARL is distributed in the hope that it will be useful, but WITH- --
16 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
17 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
18 -- for  more details.  You should have  received  a copy of the GNU General --
19 -- Public License  distributed with GNARL; see file COPYING.  If not, write --
20 -- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
21 -- MA 02111-1307, USA.                                                      --
22 --                                                                          --
23 -- As a special exception,  if other files  instantiate  generics from this --
24 -- unit, or you link  this unit with other files  to produce an executable, --
25 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
26 -- covered  by the  GNU  General  Public  License.  This exception does not --
27 -- however invalidate  any other reasons why  the executable file  might be --
28 -- covered by the  GNU Public License.                                      --
29 --                                                                          --
30 -- GNARL was developed by the GNARL team at Florida State University.       --
31 -- Extensive contributions were provided by Ada Core Technologies, Inc.     --
32 --                                                                          --
33 ------------------------------------------------------------------------------
34
35 --  This is the OS/2 version of this package
36
37 --  This package encapsulates all direct interfaces to OS services
38 --  that are needed by children of System.
39
40 --  PLEASE DO NOT add any with-clauses to this package
41 --  or remove the pragma Preelaborate.
42
43 --  It is designed to be a bottom-level (leaf) package.
44
45 with Interfaces.C;
46 package System.OS_Interface is
47    pragma Preelaborate;
48
49    package C renames Interfaces.C;
50
51    subtype int            is C.int;
52    subtype unsigned_long  is C.unsigned_long;
53
54    type Duration_In_Millisec is new C.long;
55    --  New type to prevent confusing time functions in this package
56    --  with time functions returning seconds or other units.
57
58    type Thread_Id is new unsigned_long;
59
60    -----------
61    -- Errno --
62    -----------
63
64    function errno return int;
65    pragma Import (C, errno, "__get_errno");
66
67    EAGAIN   : constant := 5;
68    EINTR    : constant := 13;
69    EINVAL   : constant := 14;
70    ENOMEM   : constant := 25;
71
72    -------------
73    -- Signals --
74    -------------
75
76    Max_Interrupt : constant := 15;
77    type Signal is new int range 0 .. Max_Interrupt;
78
79    --  Signals for OS/2, only SIGTERM used currently. The values are
80    --  fake, since OS/2 uses 32 bit exception numbers that cannot be
81    --  used to index arrays etc. The GNULLI maps these Unix-like signals
82    --  to OS/2 exception numbers.
83
84    --  SIGTERM is used for the abort interrupt.
85
86    SIGHUP     : constant := 1;  --  hangup
87    SIGINT     : constant := 2;  --  interrupt (rubout)
88    SIGQUIT    : constant := 3;  --  quit (ASCD FS)
89    SIGILL     : constant := 4;  --  illegal instruction (not reset)
90    SIGTRAP    : constant := 5;  --  trace trap (not reset)
91    SIGIOT     : constant := 6;  --  IOT instruction
92    SIGEMT     : constant := 0;  --  EMT instruction
93    SIGFPE     : constant := 8;  --  floating point exception
94    SIGKILL    : constant := 9;  --  kill (cannot be caught or ignored)
95    SIGBUS     : constant := 10; --  bus error
96    SIGSEGV    : constant := 11; --  segmentation violation
97    SIGSYS     : constant := 12; --  bad argument to system call
98    SIGPIPE    : constant := 13; --  write on a pipe with no one to read it
99    SIGALRM    : constant := 14; --  alarm clock
100    SIGTERM    : constant := 15; --  software termination signal from kill
101
102    subtype sigset_t is unsigned_long;
103
104    ----------
105    -- Time --
106    ----------
107
108    function Clock return Duration;
109    pragma Inline (Clock);
110    --  Clock measuring time since the epoch, which is the boot-time.
111    --  The clock resolution is approximately 838 ns.
112
113    procedure Delay_For (Period : in Duration_In_Millisec);
114    pragma Inline (Delay_For);
115    --  Changed Sleep to Delay_For, for consistency with System.Time_Operations
116
117    ----------------
118    -- Scheduling --
119    ----------------
120
121    --  Put the calling task at the end of the ready queue for its priority
122
123    procedure Yield;
124    pragma Inline (Yield);
125
126 end System.OS_Interface;