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 295