1! Copyright (C) 2005, 2007, 2008, 2009, 2011 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_lock_kind = @OMP_LOCK_KIND@ 28 integer, parameter :: omp_nest_lock_kind = @OMP_NEST_LOCK_KIND@ 29 integer, parameter :: omp_sched_kind = 4 30 end module 31 32 module omp_lib 33 use omp_lib_kinds 34 implicit none 35 integer, parameter :: openmp_version = 201107 36 integer (omp_sched_kind), parameter :: omp_sched_static = 1 37 integer (omp_sched_kind), parameter :: omp_sched_dynamic = 2 38 integer (omp_sched_kind), parameter :: omp_sched_guided = 3 39 integer (omp_sched_kind), parameter :: omp_sched_auto = 4 40 41 interface 42 subroutine omp_init_lock (lock) 43 use omp_lib_kinds 44 integer (omp_lock_kind), intent (out) :: lock 45 end subroutine omp_init_lock 46 end interface 47 48 interface 49 subroutine omp_init_nest_lock (lock) 50 use omp_lib_kinds 51 integer (omp_nest_lock_kind), intent (out) :: lock 52 end subroutine omp_init_nest_lock 53 end interface 54 55 interface 56 subroutine omp_destroy_lock (lock) 57 use omp_lib_kinds 58 integer (omp_lock_kind), intent (inout) :: lock 59 end subroutine omp_destroy_lock 60 end interface 61 62 interface 63 subroutine omp_destroy_nest_lock (lock) 64 use omp_lib_kinds 65 integer (omp_nest_lock_kind), intent (inout) :: lock 66 end subroutine omp_destroy_nest_lock 67 end interface 68 69 interface 70 subroutine omp_set_lock (lock) 71 use omp_lib_kinds 72 integer (omp_lock_kind), intent (inout) :: lock 73 end subroutine omp_set_lock 74 end interface 75 76 interface 77 subroutine omp_set_nest_lock (lock) 78 use omp_lib_kinds 79 integer (omp_nest_lock_kind), intent (inout) :: lock 80 end subroutine omp_set_nest_lock 81 end interface 82 83 interface 84 subroutine omp_unset_lock (lock) 85 use omp_lib_kinds 86 integer (omp_lock_kind), intent (inout) :: lock 87 end subroutine omp_unset_lock 88 end interface 89 90 interface 91 subroutine omp_unset_nest_lock (lock) 92 use omp_lib_kinds 93 integer (omp_nest_lock_kind), intent (inout) :: lock 94 end subroutine omp_unset_nest_lock 95 end interface 96 97 interface omp_set_dynamic 98 subroutine omp_set_dynamic (set) 99 logical (4), intent (in) :: set 100 end subroutine omp_set_dynamic 101 subroutine omp_set_dynamic_8 (set) 102 logical (8), intent (in) :: set 103 end subroutine omp_set_dynamic_8 104 end interface 105 106 interface omp_set_nested 107 subroutine omp_set_nested (set) 108 logical (4), intent (in) :: set 109 end subroutine omp_set_nested 110 subroutine omp_set_nested_8 (set) 111 logical (8), intent (in) :: set 112 end subroutine omp_set_nested_8 113 end interface 114 115 interface omp_set_num_threads 116 subroutine omp_set_num_threads (set) 117 integer (4), intent (in) :: set 118 end subroutine omp_set_num_threads 119 subroutine omp_set_num_threads_8 (set) 120 integer (8), intent (in) :: set 121 end subroutine omp_set_num_threads_8 122 end interface 123 124 interface 125 function omp_get_dynamic () 126 use omp_lib_kinds 127 logical (4) :: omp_get_dynamic 128 end function omp_get_dynamic 129 end interface 130 131 interface 132 function omp_get_nested () 133 use omp_lib_kinds 134 logical (4) :: omp_get_nested 135 end function omp_get_nested 136 end interface 137 138 interface 139 function omp_in_parallel () 140 use omp_lib_kinds 141 logical (4) :: omp_in_parallel 142 end function omp_in_parallel 143 end interface 144 145 interface 146 function omp_test_lock (lock) 147 use omp_lib_kinds 148 logical (4) :: omp_test_lock 149 integer (omp_lock_kind), intent (inout) :: lock 150 end function omp_test_lock 151 end interface 152 153 interface 154 function omp_get_max_threads () 155 use omp_lib_kinds 156 integer (4) :: omp_get_max_threads 157 end function omp_get_max_threads 158 end interface 159 160 interface 161 function omp_get_num_procs () 162 use omp_lib_kinds 163 integer (4) :: omp_get_num_procs 164 end function omp_get_num_procs 165 end interface 166 167 interface 168 function omp_get_num_threads () 169 use omp_lib_kinds 170 integer (4) :: omp_get_num_threads 171 end function omp_get_num_threads 172 end interface 173 174 interface 175 function omp_get_thread_num () 176 use omp_lib_kinds 177 integer (4) :: omp_get_thread_num 178 end function omp_get_thread_num 179 end interface 180 181 interface 182 function omp_test_nest_lock (lock) 183 use omp_lib_kinds 184 integer (4) :: omp_test_nest_lock 185 integer (omp_nest_lock_kind), intent (inout) :: lock 186 end function omp_test_nest_lock 187 end interface 188 189 interface 190 function omp_get_wtick () 191 double precision :: omp_get_wtick 192 end function omp_get_wtick 193 end interface 194 195 interface 196 function omp_get_wtime () 197 double precision :: omp_get_wtime 198 end function omp_get_wtime 199 end interface 200 201 interface omp_set_schedule 202 subroutine omp_set_schedule (kind, modifier) 203 use omp_lib_kinds 204 integer (omp_sched_kind), intent (in) :: kind 205 integer (4), intent (in) :: modifier 206 end subroutine omp_set_schedule 207 subroutine omp_set_schedule_8 (kind, modifier) 208 use omp_lib_kinds 209 integer (omp_sched_kind), intent (in) :: kind 210 integer (8), intent (in) :: modifier 211 end subroutine omp_set_schedule_8 212 end interface 213 214 interface omp_get_schedule 215 subroutine omp_get_schedule (kind, modifier) 216 use omp_lib_kinds 217 integer (omp_sched_kind), intent (out) :: kind 218 integer (4), intent (out) :: modifier 219 end subroutine omp_get_schedule 220 subroutine omp_get_schedule_8 (kind, modifier) 221 use omp_lib_kinds 222 integer (omp_sched_kind), intent (out) :: kind 223 integer (8), intent (out) :: modifier 224 end subroutine omp_get_schedule_8 225 end interface 226 227 interface 228 function omp_get_thread_limit () 229 use omp_lib_kinds 230 integer (4) :: omp_get_thread_limit 231 end function omp_get_thread_limit 232 end interface 233 234 interface omp_set_max_active_levels 235 subroutine omp_set_max_active_levels (max_levels) 236 use omp_lib_kinds 237 integer (4), intent (in) :: max_levels 238 end subroutine omp_set_max_active_levels 239 subroutine omp_set_max_active_levels_8 (max_levels) 240 use omp_lib_kinds 241 integer (8), intent (in) :: max_levels 242 end subroutine omp_set_max_active_levels_8 243 end interface 244 245 interface 246 function omp_get_max_active_levels () 247 use omp_lib_kinds 248 integer (4) :: omp_get_max_active_levels 249 end function omp_get_max_active_levels 250 end interface 251 252 interface 253 function omp_get_level () 254 use omp_lib_kinds 255 integer (4) :: omp_get_level 256 end function omp_get_level 257 end interface 258 259 interface omp_get_ancestor_thread_num 260 function omp_get_ancestor_thread_num (level) 261 use omp_lib_kinds 262 integer (4), intent (in) :: level 263 integer (4) :: omp_get_ancestor_thread_num 264 end function omp_get_ancestor_thread_num 265 function omp_get_ancestor_thread_num_8 (level) 266 use omp_lib_kinds 267 integer (8), intent (in) :: level 268 integer (4) :: omp_get_ancestor_thread_num_8 269 end function omp_get_ancestor_thread_num_8 270 end interface 271 272 interface omp_get_team_size 273 function omp_get_team_size (level) 274 use omp_lib_kinds 275 integer (4), intent (in) :: level 276 integer (4) :: omp_get_team_size 277 end function omp_get_team_size 278 function omp_get_team_size_8 (level) 279 use omp_lib_kinds 280 integer (8), intent (in) :: level 281 integer (4) :: omp_get_team_size_8 282 end function omp_get_team_size_8 283 end interface 284 285 interface 286 function omp_get_active_level () 287 use omp_lib_kinds 288 integer (4) :: omp_get_active_level 289 end function omp_get_active_level 290 end interface 291 292 interface 293 function omp_in_final () 294 use omp_lib_kinds 295 logical (4) :: omp_in_final 296 end function omp_in_final 297 end interface 298 299 end module omp_lib 300