OSDN Git Service

gcc/
[pf3gnuchains/gcc-fork.git] / libgomp / omp_lib.f90.in
1 !  Copyright (C) 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
2 !  Contributed by Jakub Jelinek <jakub@redhat.com>.
3
4 !  This file is part of the GNU OpenMP Library (libgomp).
5
6 !  Libgomp is free software; you can redistribute it and/or modify it
7 !  under the terms of the GNU General Public License as published by
8 !  the Free Software Foundation; either version 3, or (at your option)
9 !  any later version.
10
11 !  Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
12 !  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 !  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14 !  more details.
15
16 !  Under Section 7 of GPL version 3, you are granted additional
17 !  permissions described in the GCC Runtime Library Exception, version
18 !  3.1, as published by the Free Software Foundation.
19
20 !  You should have received a copy of the GNU General Public License and
21 !  a copy of the GCC Runtime Library Exception along with this program;
22 !  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23 !  <http://www.gnu.org/licenses/>.
24
25       module omp_lib_kinds
26         implicit none
27         integer, parameter :: omp_integer_kind = 4
28         integer, parameter :: omp_logical_kind = 4
29         integer, parameter :: omp_lock_kind = @OMP_LOCK_KIND@
30         integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@
31         integer, parameter :: omp_sched_kind = 4
32       end module
33
34       module omp_lib
35         use omp_lib_kinds
36         implicit none
37         integer, parameter :: openmp_version = 200805
38         integer (omp_sched_kind), parameter :: omp_sched_static = 1
39         integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2
40         integer (omp_sched_kind), parameter :: omp_sched_guided = 3
41         integer (omp_sched_kind), parameter :: omp_sched_auto = 4
42
43         interface
44           subroutine omp_init_lock (lock)
45             use omp_lib_kinds
46             integer (omp_lock_kind), intent (out) :: lock
47           end subroutine omp_init_lock
48         end interface
49
50         interface
51           subroutine omp_init_nest_lock (lock)
52             use omp_lib_kinds
53             integer (omp_nest_lock_kind), intent (out) :: lock
54           end subroutine omp_init_nest_lock
55         end interface
56
57         interface
58           subroutine omp_destroy_lock (lock)
59             use omp_lib_kinds
60             integer (omp_lock_kind), intent (inout) :: lock
61           end subroutine omp_destroy_lock
62         end interface
63
64         interface
65           subroutine omp_destroy_nest_lock (lock)
66             use omp_lib_kinds
67             integer (omp_nest_lock_kind), intent (inout) :: lock
68           end subroutine omp_destroy_nest_lock
69         end interface
70
71         interface
72           subroutine omp_set_lock (lock)
73             use omp_lib_kinds
74             integer (omp_lock_kind), intent (inout) :: lock
75           end subroutine omp_set_lock
76         end interface
77
78         interface
79           subroutine omp_set_nest_lock (lock)
80             use omp_lib_kinds
81             integer (omp_nest_lock_kind), intent (inout) :: lock
82           end subroutine omp_set_nest_lock
83         end interface
84
85         interface
86           subroutine omp_unset_lock (lock)
87             use omp_lib_kinds
88             integer (omp_lock_kind), intent (inout) :: lock
89           end subroutine omp_unset_lock
90         end interface
91
92         interface
93           subroutine omp_unset_nest_lock (lock)
94             use omp_lib_kinds
95             integer (omp_nest_lock_kind), intent (inout) :: lock
96           end subroutine omp_unset_nest_lock
97         end interface
98
99         interface omp_set_dynamic
100           subroutine omp_set_dynamic (set)
101             logical (4), intent (in) :: set
102           end subroutine omp_set_dynamic
103           subroutine omp_set_dynamic_8 (set)
104             logical (8), intent (in) :: set
105           end subroutine omp_set_dynamic_8
106         end interface
107
108         interface omp_set_nested
109           subroutine omp_set_nested (set)
110             logical (4), intent (in) :: set
111           end subroutine omp_set_nested
112           subroutine omp_set_nested_8 (set)
113             logical (8), intent (in) :: set
114           end subroutine omp_set_nested_8
115         end interface
116
117         interface omp_set_num_threads
118           subroutine omp_set_num_threads (set)
119             integer (4), intent (in) :: set
120           end subroutine omp_set_num_threads
121           subroutine omp_set_num_threads_8 (set)
122             integer (8), intent (in) :: set
123           end subroutine omp_set_num_threads_8
124         end interface
125
126         interface
127           function omp_get_dynamic ()
128             use omp_lib_kinds
129             logical (omp_logical_kind) :: omp_get_dynamic
130           end function omp_get_dynamic
131         end interface
132
133         interface
134           function omp_get_nested ()
135             use omp_lib_kinds
136             logical (omp_logical_kind) :: omp_get_nested
137           end function omp_get_nested
138         end interface
139
140         interface
141           function omp_in_parallel ()
142             use omp_lib_kinds
143             logical (omp_logical_kind) :: omp_in_parallel
144           end function omp_in_parallel
145         end interface
146
147         interface
148           function omp_test_lock (lock)
149             use omp_lib_kinds
150             logical (omp_logical_kind) :: omp_test_lock
151             integer (omp_lock_kind), intent (inout) :: lock
152           end function omp_test_lock
153         end interface
154
155         interface
156           function omp_get_max_threads ()
157             use omp_lib_kinds
158             integer (omp_integer_kind) :: omp_get_max_threads
159           end function omp_get_max_threads
160         end interface
161
162         interface
163           function omp_get_num_procs ()
164             use omp_lib_kinds
165             integer (omp_integer_kind) :: omp_get_num_procs
166           end function omp_get_num_procs
167         end interface
168
169         interface
170           function omp_get_num_threads ()
171             use omp_lib_kinds
172             integer (omp_integer_kind) :: omp_get_num_threads
173           end function omp_get_num_threads
174         end interface
175
176         interface
177           function omp_get_thread_num ()
178             use omp_lib_kinds
179             integer (omp_integer_kind) :: omp_get_thread_num
180           end function omp_get_thread_num
181         end interface
182
183         interface
184           function omp_test_nest_lock (lock)
185             use omp_lib_kinds
186             integer (omp_integer_kind) :: omp_test_nest_lock
187             integer (omp_nest_lock_kind), intent (inout) :: lock
188           end function omp_test_nest_lock
189         end interface
190
191         interface
192           function omp_get_wtick ()
193             double precision :: omp_get_wtick
194           end function omp_get_wtick
195         end interface
196
197         interface
198           function omp_get_wtime ()
199             double precision :: omp_get_wtime
200           end function omp_get_wtime
201         end interface
202
203         interface omp_set_schedule
204           subroutine omp_set_schedule (kind, modifier)
205             use omp_lib_kinds
206             integer (omp_sched_kind), intent (in) :: kind
207             integer (4), intent (in) :: modifier
208           end subroutine omp_set_schedule
209           subroutine omp_set_schedule_8 (kind, modifier)
210             use omp_lib_kinds
211             integer (omp_sched_kind), intent (in) :: kind
212             integer (8), intent (in) :: modifier
213           end subroutine omp_set_schedule_8
214          end interface
215
216         interface omp_get_schedule
217           subroutine omp_get_schedule (kind, modifier)
218             use omp_lib_kinds
219             integer (omp_sched_kind), intent (out) :: kind
220             integer (4), intent (out) :: modifier
221           end subroutine omp_get_schedule
222           subroutine omp_get_schedule_8 (kind, modifier)
223             use omp_lib_kinds
224             integer (omp_sched_kind), intent (out) :: kind
225             integer (8), intent (out) :: modifier
226           end subroutine omp_get_schedule_8
227          end interface
228
229         interface
230           function omp_get_thread_limit ()
231             use omp_lib_kinds
232             integer (omp_integer_kind) :: omp_get_thread_limit
233           end function omp_get_thread_limit
234         end interface
235
236         interface omp_set_max_active_levels
237           subroutine omp_set_max_active_levels (max_levels)
238             use omp_lib_kinds
239             integer (4), intent (in) :: max_levels
240           end subroutine omp_set_max_active_levels
241           subroutine omp_set_max_active_levels_8 (max_levels)
242             use omp_lib_kinds
243             integer (8), intent (in) :: max_levels
244           end subroutine omp_set_max_active_levels_8
245         end interface
246
247         interface
248           function omp_get_max_active_levels ()
249             use omp_lib_kinds
250             integer (omp_integer_kind) :: omp_get_max_active_levels
251           end function omp_get_max_active_levels
252         end interface
253
254         interface
255           function omp_get_level ()
256             use omp_lib_kinds
257             integer (omp_integer_kind) :: omp_get_level
258           end function omp_get_level
259         end interface
260
261         interface omp_get_ancestor_thread_num
262           function omp_get_ancestor_thread_num (level)
263             use omp_lib_kinds
264             integer (4), intent (in) :: level
265             integer (omp_integer_kind) :: omp_get_ancestor_thread_num
266           end function omp_get_ancestor_thread_num
267           function omp_get_ancestor_thread_num_8 (level)
268             use omp_lib_kinds
269             integer (8), intent (in) :: level
270             integer (omp_integer_kind) :: omp_get_ancestor_thread_num_8
271           end function omp_get_ancestor_thread_num_8
272         end interface
273
274         interface omp_get_team_size
275           function omp_get_team_size (level)
276             use omp_lib_kinds
277             integer (4), intent (in) :: level
278             integer (omp_integer_kind) :: omp_get_team_size
279           end function omp_get_team_size
280           function omp_get_team_size_8 (level)
281             use omp_lib_kinds
282             integer (8), intent (in) :: level
283             integer (omp_integer_kind) :: omp_get_team_size_8
284           end function omp_get_team_size_8
285         end interface
286
287         interface
288           function omp_get_active_level ()
289             use omp_lib_kinds
290             integer (omp_integer_kind) :: omp_get_active_level
291           end function omp_get_active_level
292         end interface
293
294       end module omp_lib