]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/openmp/runtime/src/include/50/omp_lib.f90.var
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / openmp / runtime / src / include / 50 / omp_lib.f90.var
1 ! include/50/omp_lib.f90.var
2
3 !
4 !//===----------------------------------------------------------------------===//
5 !//
6 !//                     The LLVM Compiler Infrastructure
7 !//
8 !// This file is dual licensed under the MIT and the University of Illinois Open
9 !// Source Licenses. See LICENSE.txt for details.
10 !//
11 !//===----------------------------------------------------------------------===//
12 !
13
14       module omp_lib_kinds
15
16         use, intrinsic :: iso_c_binding
17
18         integer, parameter :: omp_integer_kind       = c_int
19         integer, parameter :: omp_logical_kind       = 4
20         integer, parameter :: omp_real_kind          = c_float
21         integer, parameter :: kmp_double_kind        = c_double
22         integer, parameter :: omp_lock_kind          = c_intptr_t
23         integer, parameter :: omp_nest_lock_kind     = c_intptr_t
24         integer, parameter :: omp_sched_kind         = omp_integer_kind
25         integer, parameter :: omp_proc_bind_kind     = omp_integer_kind
26         integer, parameter :: kmp_pointer_kind       = c_intptr_t
27         integer, parameter :: kmp_size_t_kind        = c_size_t
28         integer, parameter :: kmp_affinity_mask_kind = c_intptr_t
29         integer, parameter :: kmp_cancel_kind        = omp_integer_kind
30         integer, parameter :: omp_sync_hint_kind     = omp_integer_kind
31         integer, parameter :: omp_lock_hint_kind     = omp_sync_hint_kind
32         integer, parameter :: omp_control_tool_kind  = omp_integer_kind
33         integer, parameter :: omp_control_tool_result_kind = omp_integer_kind
34         integer, parameter :: omp_allocator_kind = c_intptr_t
35
36       end module omp_lib_kinds
37
38       module omp_lib
39
40         use omp_lib_kinds
41
42         integer (kind=omp_integer_kind), parameter :: openmp_version    = @LIBOMP_OMP_YEAR_MONTH@
43         integer (kind=omp_integer_kind), parameter :: kmp_version_major = @LIBOMP_VERSION_MAJOR@
44         integer (kind=omp_integer_kind), parameter :: kmp_version_minor = @LIBOMP_VERSION_MINOR@
45         integer (kind=omp_integer_kind), parameter :: kmp_version_build = @LIBOMP_VERSION_BUILD@
46         character(*)               kmp_build_date
47         parameter( kmp_build_date = '@LIBOMP_BUILD_DATE@' )
48
49         integer(kind=omp_sched_kind), parameter :: omp_sched_static  = 1
50         integer(kind=omp_sched_kind), parameter :: omp_sched_dynamic = 2
51         integer(kind=omp_sched_kind), parameter :: omp_sched_guided  = 3
52         integer(kind=omp_sched_kind), parameter :: omp_sched_auto    = 4
53
54
55         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_false = 0
56         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_true = 1
57         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_master = 2
58         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_close = 3
59         integer (kind=omp_proc_bind_kind), parameter :: omp_proc_bind_spread = 4
60
61         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_parallel = 1
62         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_loop = 2
63         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_sections = 3
64         integer (kind=kmp_cancel_kind), parameter :: kmp_cancel_taskgroup = 4
65
66         integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_none           = 0
67         integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_uncontended    = 1
68         integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_contended      = 2
69         integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_nonspeculative = 4
70         integer (kind=omp_sync_hint_kind), parameter :: omp_sync_hint_speculative    = 8
71         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_none = omp_sync_hint_none
72         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_uncontended = omp_sync_hint_uncontended
73         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_contended = omp_sync_hint_contended
74         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative
75         integer (kind=omp_lock_hint_kind), parameter :: omp_lock_hint_speculative = omp_sync_hint_speculative
76         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_hle         = 65536
77         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_rtm         = 131072
78         integer (kind=omp_lock_hint_kind), parameter :: kmp_lock_hint_adaptive    = 262144
79
80         integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_start = 1
81         integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_pause = 2
82         integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_flush = 3
83         integer (kind=omp_control_tool_kind), parameter :: omp_control_tool_end = 4
84
85         integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_notool = -2
86         integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_nocallback = -1
87         integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_success = 0
88         integer (kind=omp_control_tool_result_kind), parameter :: omp_control_tool_ignored = 1
89
90         integer (kind=omp_allocator_kind), parameter :: omp_null_allocator = 0
91         integer (kind=omp_allocator_kind), parameter :: omp_default_mem_alloc = 1
92         integer (kind=omp_allocator_kind), parameter :: omp_large_cap_mem_alloc = 2
93         integer (kind=omp_allocator_kind), parameter :: omp_const_mem_alloc = 3
94         integer (kind=omp_allocator_kind), parameter :: omp_high_bw_mem_alloc = 4
95         integer (kind=omp_allocator_kind), parameter :: omp_low_lat_mem_alloc = 5
96         integer (kind=omp_allocator_kind), parameter :: omp_cgroup_mem_alloc = 6
97         integer (kind=omp_allocator_kind), parameter :: omp_pteam_mem_alloc = 7
98         integer (kind=omp_allocator_kind), parameter :: omp_thread_mem_alloc = 8
99
100         interface
101
102 !         ***
103 !         *** omp_* entry points
104 !         ***
105
106           subroutine omp_set_num_threads(num_threads) bind(c)
107             use omp_lib_kinds
108             integer (kind=omp_integer_kind), value :: num_threads
109           end subroutine omp_set_num_threads
110
111           subroutine omp_set_dynamic(dynamic_threads) bind(c)
112             use omp_lib_kinds
113             logical (kind=omp_logical_kind), value :: dynamic_threads
114           end subroutine omp_set_dynamic
115
116           subroutine omp_set_nested(nested) bind(c)
117             use omp_lib_kinds
118             logical (kind=omp_logical_kind), value :: nested
119           end subroutine omp_set_nested
120
121           function omp_get_num_threads() bind(c)
122             use omp_lib_kinds
123             integer (kind=omp_integer_kind) omp_get_num_threads
124           end function omp_get_num_threads
125
126           function omp_get_max_threads() bind(c)
127             use omp_lib_kinds
128             integer (kind=omp_integer_kind) omp_get_max_threads
129           end function omp_get_max_threads
130
131           function omp_get_thread_num() bind(c)
132             use omp_lib_kinds
133             integer (kind=omp_integer_kind) omp_get_thread_num
134           end function omp_get_thread_num
135
136           function omp_get_num_procs() bind(c)
137             use omp_lib_kinds
138             integer (kind=omp_integer_kind) omp_get_num_procs
139           end function omp_get_num_procs
140
141           function omp_in_parallel() bind(c)
142             use omp_lib_kinds
143             logical (kind=omp_logical_kind) omp_in_parallel
144           end function omp_in_parallel
145
146           function omp_in_final() bind(c)
147             use omp_lib_kinds
148             logical (kind=omp_logical_kind) omp_in_final
149           end function omp_in_final
150
151           function omp_get_dynamic() bind(c)
152             use omp_lib_kinds
153             logical (kind=omp_logical_kind) omp_get_dynamic
154           end function omp_get_dynamic
155
156           function omp_get_nested() bind(c)
157             use omp_lib_kinds
158             logical (kind=omp_logical_kind) omp_get_nested
159           end function omp_get_nested
160
161           function omp_get_thread_limit() bind(c)
162             use omp_lib_kinds
163             integer (kind=omp_integer_kind) omp_get_thread_limit
164           end function omp_get_thread_limit
165
166           subroutine omp_set_max_active_levels(max_levels) bind(c)
167             use omp_lib_kinds
168             integer (kind=omp_integer_kind), value :: max_levels
169           end subroutine omp_set_max_active_levels
170
171           function omp_get_max_active_levels() bind(c)
172             use omp_lib_kinds
173             integer (kind=omp_integer_kind) omp_get_max_active_levels
174           end function omp_get_max_active_levels
175
176           function omp_get_level() bind(c)
177             use omp_lib_kinds
178             integer (kind=omp_integer_kind) omp_get_level
179           end function omp_get_level
180
181           function omp_get_active_level() bind(c)
182             use omp_lib_kinds
183             integer (kind=omp_integer_kind) omp_get_active_level
184           end function omp_get_active_level
185
186           function omp_get_ancestor_thread_num(level) bind(c)
187             use omp_lib_kinds
188             integer (kind=omp_integer_kind) omp_get_ancestor_thread_num
189             integer (kind=omp_integer_kind), value :: level
190           end function omp_get_ancestor_thread_num
191
192           function omp_get_team_size(level) bind(c)
193             use omp_lib_kinds
194             integer (kind=omp_integer_kind) omp_get_team_size
195             integer (kind=omp_integer_kind), value :: level
196           end function omp_get_team_size
197
198           subroutine omp_set_schedule(kind, chunk_size) bind(c)
199             use omp_lib_kinds
200             integer (kind=omp_sched_kind), value :: kind
201             integer (kind=omp_integer_kind), value :: chunk_size
202           end subroutine omp_set_schedule
203
204           subroutine omp_get_schedule(kind, chunk_size) bind(c)
205             use omp_lib_kinds
206             integer (kind=omp_sched_kind) kind
207             integer (kind=omp_integer_kind) chunk_size
208           end subroutine omp_get_schedule
209
210           function omp_get_proc_bind() bind(c)
211             use omp_lib_kinds
212             integer (kind=omp_proc_bind_kind) omp_get_proc_bind
213           end function omp_get_proc_bind
214
215           function omp_get_num_places() bind(c)
216             use omp_lib_kinds
217             integer (kind=omp_integer_kind) omp_get_num_places
218           end function omp_get_num_places
219
220           function omp_get_place_num_procs(place_num) bind(c)
221             use omp_lib_kinds
222             integer (kind=omp_integer_kind), value :: place_num
223             integer (kind=omp_integer_kind) omp_get_place_num_procs
224           end function omp_get_place_num_procs
225
226           subroutine omp_get_place_proc_ids(place_num, ids) bind(c)
227             use omp_lib_kinds
228             integer (kind=omp_integer_kind), value :: place_num
229             integer (kind=omp_integer_kind) ids(*)
230           end subroutine omp_get_place_proc_ids
231
232           function omp_get_place_num() bind(c)
233             use omp_lib_kinds
234             integer (kind=omp_integer_kind) omp_get_place_num
235           end function omp_get_place_num
236
237           function omp_get_partition_num_places() bind(c)
238             use omp_lib_kinds
239             integer (kind=omp_integer_kind) omp_get_partition_num_places
240           end function omp_get_partition_num_places
241
242           subroutine omp_get_partition_place_nums(place_nums) bind(c)
243             use omp_lib_kinds
244             integer (kind=omp_integer_kind) place_nums(*)
245           end subroutine omp_get_partition_place_nums
246
247           function omp_get_wtime() bind(c)
248             use omp_lib_kinds
249             real (kind=kmp_double_kind) omp_get_wtime
250           end function omp_get_wtime
251
252           function omp_get_wtick() bind(c)
253             use omp_lib_kinds
254             real (kind=kmp_double_kind) omp_get_wtick
255           end function omp_get_wtick
256
257           function omp_get_default_device() bind(c)
258             use omp_lib_kinds
259             integer (kind=omp_integer_kind) omp_get_default_device
260           end function omp_get_default_device
261
262           subroutine omp_set_default_device(device_num) bind(c)
263             use omp_lib_kinds
264             integer (kind=omp_integer_kind), value :: device_num
265           end subroutine omp_set_default_device
266
267           function omp_get_num_devices() bind(c)
268             use omp_lib_kinds
269             integer (kind=omp_integer_kind) omp_get_num_devices
270           end function omp_get_num_devices
271
272           function omp_get_num_teams() bind(c)
273             use omp_lib_kinds
274             integer (kind=omp_integer_kind) omp_get_num_teams
275           end function omp_get_num_teams
276
277           function omp_get_team_num() bind(c)
278             use omp_lib_kinds
279             integer (kind=omp_integer_kind) omp_get_team_num
280           end function omp_get_team_num
281
282           function omp_get_cancellation() bind(c)
283             use omp_lib_kinds
284             integer (kind=omp_integer_kind) omp_get_cancellation
285           end function omp_get_cancellation
286
287           function omp_is_initial_device() bind(c)
288             use omp_lib_kinds
289             logical (kind=omp_logical_kind) omp_is_initial_device
290           end function omp_is_initial_device
291
292           function omp_get_initial_device() bind(c)
293             use omp_lib_kinds
294             integer (kind=omp_integer_kind) omp_get_initial_device
295           end function omp_get_initial_device
296
297           function omp_get_device_num() bind(c)
298             use omp_lib_kinds
299             integer (kind=omp_integer_kind) omp_get_device_num
300           end function omp_get_device_num
301
302           subroutine omp_init_lock(svar) bind(c)
303 !DIR$ IF(__INTEL_COMPILER.GE.1400)
304 !DIR$ attributes known_intrinsic :: omp_init_lock
305 !DIR$ ENDIF
306             use omp_lib_kinds
307             integer (kind=omp_lock_kind) svar
308           end subroutine omp_init_lock
309
310           subroutine omp_destroy_lock(svar) bind(c)
311 !DIR$ IF(__INTEL_COMPILER.GE.1400)
312 !DIR$ attributes known_intrinsic :: omp_destroy_lock
313 !DIR$ ENDIF
314             use omp_lib_kinds
315             integer (kind=omp_lock_kind) svar
316           end subroutine omp_destroy_lock
317
318           subroutine omp_set_lock(svar) bind(c)
319 !DIR$ IF(__INTEL_COMPILER.GE.1400)
320 !DIR$ attributes known_intrinsic :: omp_set_lock
321 !DIR$ ENDIF
322             use omp_lib_kinds
323             integer (kind=omp_lock_kind) svar
324           end subroutine omp_set_lock
325
326           subroutine omp_unset_lock(svar) bind(c)
327 !DIR$ IF(__INTEL_COMPILER.GE.1400)
328 !DIR$ attributes known_intrinsic :: omp_unset_lock
329 !DIR$ ENDIF
330             use omp_lib_kinds
331             integer (kind=omp_lock_kind) svar
332           end subroutine omp_unset_lock
333
334           function omp_test_lock(svar) bind(c)
335 !DIR$ IF(__INTEL_COMPILER.GE.1400)
336 !DIR$ attributes known_intrinsic :: omp_test_lock
337 !DIR$ ENDIF
338             use omp_lib_kinds
339             logical (kind=omp_logical_kind) omp_test_lock
340             integer (kind=omp_lock_kind) svar
341           end function omp_test_lock
342
343           subroutine omp_init_nest_lock(nvar) bind(c)
344 !DIR$ IF(__INTEL_COMPILER.GE.1400)
345 !DIR$ attributes known_intrinsic :: omp_init_nest_lock
346 !DIR$ ENDIF
347             use omp_lib_kinds
348             integer (kind=omp_nest_lock_kind) nvar
349           end subroutine omp_init_nest_lock
350
351           subroutine omp_destroy_nest_lock(nvar) bind(c)
352 !DIR$ IF(__INTEL_COMPILER.GE.1400)
353 !DIR$ attributes known_intrinsic :: omp_destroy_nest_lock
354 !DIR$ ENDIF
355             use omp_lib_kinds
356             integer (kind=omp_nest_lock_kind) nvar
357           end subroutine omp_destroy_nest_lock
358
359           subroutine omp_set_nest_lock(nvar) bind(c)
360 !DIR$ IF(__INTEL_COMPILER.GE.1400)
361 !DIR$ attributes known_intrinsic :: omp_set_nest_lock
362 !DIR$ ENDIF
363             use omp_lib_kinds
364             integer (kind=omp_nest_lock_kind) nvar
365           end subroutine omp_set_nest_lock
366
367           subroutine omp_unset_nest_lock(nvar) bind(c)
368 !DIR$ IF(__INTEL_COMPILER.GE.1400)
369 !DIR$ attributes known_intrinsic :: omp_unset_nest_lock
370 !DIR$ ENDIF
371             use omp_lib_kinds
372             integer (kind=omp_nest_lock_kind) nvar
373           end subroutine omp_unset_nest_lock
374
375           function omp_test_nest_lock(nvar) bind(c)
376 !DIR$ IF(__INTEL_COMPILER.GE.1400)
377 !DIR$ attributes known_intrinsic :: omp_test_nest_lock
378 !DIR$ ENDIF
379             use omp_lib_kinds
380             integer (kind=omp_integer_kind) omp_test_nest_lock
381             integer (kind=omp_nest_lock_kind) nvar
382           end function omp_test_nest_lock
383
384           function omp_get_max_task_priority() bind(c)
385             use omp_lib_kinds
386             integer (kind=omp_integer_kind) omp_get_max_task_priority
387           end function omp_get_max_task_priority
388
389           subroutine omp_set_default_allocator(svar) bind(c)
390             use omp_lib_kinds
391             integer (kind=omp_allocator_kind), value :: svar
392           end subroutine omp_set_default_allocator
393
394           function omp_get_default_allocator() bind(c)
395             use omp_lib_kinds
396             integer (kind=omp_allocator_kind) omp_get_default_allocator
397           end function omp_get_default_allocator
398
399           subroutine omp_set_affinity_format(format)
400             character (len=*) :: format
401           end subroutine omp_set_affinity_format
402
403           function omp_get_affinity_format(buffer)
404             use omp_lib_kinds
405             character (len=*) :: buffer
406             integer (kind=kmp_size_t_kind) :: omp_get_affinity_format
407           end function omp_get_affinity_format
408
409           subroutine omp_display_affinity(format)
410             character (len=*) :: format
411           end subroutine omp_display_affinity
412
413           function omp_capture_affinity(buffer, format)
414             use omp_lib_kinds
415             character (len=*) :: format
416             character (len=*) :: buffer
417             integer (kind=kmp_size_t_kind) :: omp_capture_affinity
418           end function omp_capture_affinity
419
420 !         ***
421 !         *** kmp_* entry points
422 !         ***
423
424           subroutine kmp_set_stacksize(size) bind(c)
425             use omp_lib_kinds
426             integer (kind=omp_integer_kind), value :: size
427           end subroutine kmp_set_stacksize
428
429           subroutine kmp_set_stacksize_s(size) bind(c)
430             use omp_lib_kinds
431             integer (kind=kmp_size_t_kind), value :: size
432           end subroutine kmp_set_stacksize_s
433
434           subroutine kmp_set_blocktime(msec) bind(c)
435             use omp_lib_kinds
436             integer (kind=omp_integer_kind), value :: msec
437           end subroutine kmp_set_blocktime
438
439           subroutine kmp_set_library_serial() bind(c)
440           end subroutine kmp_set_library_serial
441
442           subroutine kmp_set_library_turnaround() bind(c)
443           end subroutine kmp_set_library_turnaround
444
445           subroutine kmp_set_library_throughput() bind(c)
446           end subroutine kmp_set_library_throughput
447
448           subroutine kmp_set_library(libnum) bind(c)
449             use omp_lib_kinds
450             integer (kind=omp_integer_kind), value :: libnum
451           end subroutine kmp_set_library
452
453           subroutine kmp_set_defaults(string) bind(c)
454             use, intrinsic :: iso_c_binding
455             character (kind=c_char) :: string(*)
456           end subroutine kmp_set_defaults
457
458           function kmp_get_stacksize() bind(c)
459             use omp_lib_kinds
460             integer (kind=omp_integer_kind) kmp_get_stacksize
461           end function kmp_get_stacksize
462
463           function kmp_get_stacksize_s() bind(c)
464             use omp_lib_kinds
465             integer (kind=kmp_size_t_kind) kmp_get_stacksize_s
466           end function kmp_get_stacksize_s
467
468           function kmp_get_blocktime() bind(c)
469             use omp_lib_kinds
470             integer (kind=omp_integer_kind) kmp_get_blocktime
471           end function kmp_get_blocktime
472
473           function kmp_get_library() bind(c)
474             use omp_lib_kinds
475             integer (kind=omp_integer_kind) kmp_get_library
476           end function kmp_get_library
477
478           subroutine kmp_set_disp_num_buffers(num) bind(c)
479             use omp_lib_kinds
480             integer (kind=omp_integer_kind), value :: num
481           end subroutine kmp_set_disp_num_buffers
482
483           function kmp_set_affinity(mask) bind(c)
484             use omp_lib_kinds
485             integer (kind=omp_integer_kind) kmp_set_affinity
486             integer (kind=kmp_affinity_mask_kind) mask
487           end function kmp_set_affinity
488
489           function kmp_get_affinity(mask) bind(c)
490             use omp_lib_kinds
491             integer (kind=omp_integer_kind) kmp_get_affinity
492             integer (kind=kmp_affinity_mask_kind) mask
493           end function kmp_get_affinity
494
495           function kmp_get_affinity_max_proc() bind(c)
496             use omp_lib_kinds
497             integer (kind=omp_integer_kind) kmp_get_affinity_max_proc
498           end function kmp_get_affinity_max_proc
499
500           subroutine kmp_create_affinity_mask(mask) bind(c)
501             use omp_lib_kinds
502             integer (kind=kmp_affinity_mask_kind) mask
503           end subroutine kmp_create_affinity_mask
504
505           subroutine kmp_destroy_affinity_mask(mask) bind(c)
506             use omp_lib_kinds
507             integer (kind=kmp_affinity_mask_kind) mask
508           end subroutine kmp_destroy_affinity_mask
509
510           function kmp_set_affinity_mask_proc(proc, mask) bind(c)
511             use omp_lib_kinds
512             integer (kind=omp_integer_kind) kmp_set_affinity_mask_proc
513             integer (kind=omp_integer_kind), value :: proc
514             integer (kind=kmp_affinity_mask_kind) mask
515           end function kmp_set_affinity_mask_proc
516
517           function kmp_unset_affinity_mask_proc(proc, mask) bind(c)
518             use omp_lib_kinds
519             integer (kind=omp_integer_kind) kmp_unset_affinity_mask_proc
520             integer (kind=omp_integer_kind), value :: proc
521             integer (kind=kmp_affinity_mask_kind) mask
522           end function kmp_unset_affinity_mask_proc
523
524           function kmp_get_affinity_mask_proc(proc, mask) bind(c)
525             use omp_lib_kinds
526             integer (kind=omp_integer_kind) kmp_get_affinity_mask_proc
527             integer (kind=omp_integer_kind), value :: proc
528             integer (kind=kmp_affinity_mask_kind) mask
529           end function kmp_get_affinity_mask_proc
530
531           function kmp_malloc(size) bind(c)
532             use omp_lib_kinds
533             integer (kind=kmp_pointer_kind) kmp_malloc
534             integer (kind=kmp_size_t_kind), value :: size
535           end function kmp_malloc
536
537           function kmp_aligned_malloc(size, alignment) bind(c)
538             use omp_lib_kinds
539             integer (kind=kmp_pointer_kind) kmp_aligned_malloc
540             integer (kind=kmp_size_t_kind), value :: size
541             integer (kind=kmp_size_t_kind), value :: alignment
542           end function kmp_aligned_malloc
543
544           function kmp_calloc(nelem, elsize) bind(c)
545             use omp_lib_kinds
546             integer (kind=kmp_pointer_kind) kmp_calloc
547             integer (kind=kmp_size_t_kind), value :: nelem
548             integer (kind=kmp_size_t_kind), value :: elsize
549           end function kmp_calloc
550
551           function kmp_realloc(ptr, size) bind(c)
552             use omp_lib_kinds
553             integer (kind=kmp_pointer_kind) kmp_realloc
554             integer (kind=kmp_pointer_kind), value :: ptr
555             integer (kind=kmp_size_t_kind), value :: size
556           end function kmp_realloc
557
558           subroutine kmp_free(ptr) bind(c)
559             use omp_lib_kinds
560             integer (kind=kmp_pointer_kind), value :: ptr
561           end subroutine kmp_free
562
563           subroutine kmp_set_warnings_on() bind(c)
564           end subroutine kmp_set_warnings_on
565
566           subroutine kmp_set_warnings_off() bind(c)
567           end subroutine kmp_set_warnings_off
568
569           function kmp_get_cancellation_status(cancelkind) bind(c)
570             use omp_lib_kinds
571             integer (kind=kmp_cancel_kind), value :: cancelkind
572             logical (kind=omp_logical_kind) kmp_get_cancellation_status
573           end function kmp_get_cancellation_status
574
575           subroutine omp_init_lock_with_hint(svar, hint) bind(c)
576             use omp_lib_kinds
577             integer (kind=omp_lock_kind) svar
578             integer (kind=omp_lock_hint_kind), value :: hint
579           end subroutine omp_init_lock_with_hint
580
581           subroutine omp_init_nest_lock_with_hint(nvar, hint) bind(c)
582             use omp_lib_kinds
583             integer (kind=omp_nest_lock_kind) nvar
584             integer (kind=omp_lock_hint_kind), value :: hint
585           end subroutine omp_init_nest_lock_with_hint
586
587           function omp_control_tool(command, modifier, arg) bind(c)
588             use omp_lib_kinds
589             integer (kind=omp_integer_kind) omp_control_tool
590             integer (kind=omp_control_tool_kind), value :: command
591             integer (kind=omp_control_tool_kind), value :: modifier
592             integer (kind=kmp_pointer_kind), optional :: arg
593           end function omp_control_tool
594
595         end interface
596
597       end module omp_lib