1*8feb0f0bSmrg /* Copyright (C) 2005-2020 Free Software Foundation, Inc.
21debfc3dSmrg Contributed by Jakub Jelinek <jakub@redhat.com>.
31debfc3dSmrg
41debfc3dSmrg This file is part of the GNU Offloading and Multi Processing Library
51debfc3dSmrg (libgomp).
61debfc3dSmrg
71debfc3dSmrg Libgomp is free software; you can redistribute it and/or modify it
81debfc3dSmrg under the terms of the GNU General Public License as published by
91debfc3dSmrg the Free Software Foundation; either version 3, or (at your option)
101debfc3dSmrg any later version.
111debfc3dSmrg
121debfc3dSmrg Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
131debfc3dSmrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
141debfc3dSmrg FOR A PARTICULAR PURPOSE. See the GNU General Public License for
151debfc3dSmrg more details.
161debfc3dSmrg
171debfc3dSmrg Under Section 7 of GPL version 3, you are granted additional
181debfc3dSmrg permissions described in the GCC Runtime Library Exception, version
191debfc3dSmrg 3.1, as published by the Free Software Foundation.
201debfc3dSmrg
211debfc3dSmrg You should have received a copy of the GNU General Public License and
221debfc3dSmrg a copy of the GCC Runtime Library Exception along with this program;
231debfc3dSmrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
241debfc3dSmrg <http://www.gnu.org/licenses/>. */
251debfc3dSmrg
261debfc3dSmrg /* This file contains Fortran wrapper routines. */
271debfc3dSmrg
281debfc3dSmrg #include "libgomp.h"
291debfc3dSmrg #include "libgomp_f.h"
301debfc3dSmrg #include <stdlib.h>
31c0a68be4Smrg #include <stdio.h>
32c0a68be4Smrg #include <string.h>
331debfc3dSmrg #include <limits.h>
341debfc3dSmrg
351debfc3dSmrg #ifdef HAVE_ATTRIBUTE_ALIAS
361debfc3dSmrg /* Use internal aliases if possible. */
371debfc3dSmrg # ifndef LIBGOMP_GNU_SYMBOL_VERSIONING
381debfc3dSmrg ialias_redirect (omp_init_lock)
ialias_redirect(omp_init_nest_lock)391debfc3dSmrg ialias_redirect (omp_init_nest_lock)
401debfc3dSmrg ialias_redirect (omp_destroy_lock)
411debfc3dSmrg ialias_redirect (omp_destroy_nest_lock)
421debfc3dSmrg ialias_redirect (omp_set_lock)
431debfc3dSmrg ialias_redirect (omp_set_nest_lock)
441debfc3dSmrg ialias_redirect (omp_unset_lock)
451debfc3dSmrg ialias_redirect (omp_unset_nest_lock)
461debfc3dSmrg ialias_redirect (omp_test_lock)
471debfc3dSmrg ialias_redirect (omp_test_nest_lock)
481debfc3dSmrg # endif
491debfc3dSmrg ialias_redirect (omp_set_dynamic)
501debfc3dSmrg ialias_redirect (omp_set_nested)
511debfc3dSmrg ialias_redirect (omp_set_num_threads)
521debfc3dSmrg ialias_redirect (omp_get_dynamic)
531debfc3dSmrg ialias_redirect (omp_get_nested)
541debfc3dSmrg ialias_redirect (omp_in_parallel)
551debfc3dSmrg ialias_redirect (omp_get_max_threads)
561debfc3dSmrg ialias_redirect (omp_get_num_procs)
571debfc3dSmrg ialias_redirect (omp_get_num_threads)
581debfc3dSmrg ialias_redirect (omp_get_thread_num)
591debfc3dSmrg ialias_redirect (omp_get_wtick)
601debfc3dSmrg ialias_redirect (omp_get_wtime)
611debfc3dSmrg ialias_redirect (omp_set_schedule)
621debfc3dSmrg ialias_redirect (omp_get_schedule)
631debfc3dSmrg ialias_redirect (omp_get_thread_limit)
641debfc3dSmrg ialias_redirect (omp_set_max_active_levels)
651debfc3dSmrg ialias_redirect (omp_get_max_active_levels)
661debfc3dSmrg ialias_redirect (omp_get_level)
671debfc3dSmrg ialias_redirect (omp_get_ancestor_thread_num)
681debfc3dSmrg ialias_redirect (omp_get_team_size)
691debfc3dSmrg ialias_redirect (omp_get_active_level)
701debfc3dSmrg ialias_redirect (omp_in_final)
711debfc3dSmrg ialias_redirect (omp_get_cancellation)
721debfc3dSmrg ialias_redirect (omp_get_proc_bind)
731debfc3dSmrg ialias_redirect (omp_get_num_places)
741debfc3dSmrg ialias_redirect (omp_get_place_num_procs)
751debfc3dSmrg ialias_redirect (omp_get_place_proc_ids)
761debfc3dSmrg ialias_redirect (omp_get_place_num)
771debfc3dSmrg ialias_redirect (omp_get_partition_num_places)
781debfc3dSmrg ialias_redirect (omp_get_partition_place_nums)
791debfc3dSmrg ialias_redirect (omp_set_default_device)
801debfc3dSmrg ialias_redirect (omp_get_default_device)
811debfc3dSmrg ialias_redirect (omp_get_num_devices)
821debfc3dSmrg ialias_redirect (omp_get_num_teams)
831debfc3dSmrg ialias_redirect (omp_get_team_num)
841debfc3dSmrg ialias_redirect (omp_is_initial_device)
851debfc3dSmrg ialias_redirect (omp_get_initial_device)
861debfc3dSmrg ialias_redirect (omp_get_max_task_priority)
87c0a68be4Smrg ialias_redirect (omp_pause_resource)
88c0a68be4Smrg ialias_redirect (omp_pause_resource_all)
891debfc3dSmrg #endif
901debfc3dSmrg
911debfc3dSmrg #ifndef LIBGOMP_GNU_SYMBOL_VERSIONING
921debfc3dSmrg # define gomp_init_lock__30 omp_init_lock_
931debfc3dSmrg # define gomp_destroy_lock__30 omp_destroy_lock_
941debfc3dSmrg # define gomp_set_lock__30 omp_set_lock_
951debfc3dSmrg # define gomp_unset_lock__30 omp_unset_lock_
961debfc3dSmrg # define gomp_test_lock__30 omp_test_lock_
971debfc3dSmrg # define gomp_init_nest_lock__30 omp_init_nest_lock_
981debfc3dSmrg # define gomp_destroy_nest_lock__30 omp_destroy_nest_lock_
991debfc3dSmrg # define gomp_set_nest_lock__30 omp_set_nest_lock_
1001debfc3dSmrg # define gomp_unset_nest_lock__30 omp_unset_nest_lock_
1011debfc3dSmrg # define gomp_test_nest_lock__30 omp_test_nest_lock_
1021debfc3dSmrg #endif
1031debfc3dSmrg
1041debfc3dSmrg void
1051debfc3dSmrg gomp_init_lock__30 (omp_lock_arg_t lock)
1061debfc3dSmrg {
1071debfc3dSmrg #ifndef OMP_LOCK_DIRECT
1081debfc3dSmrg omp_lock_arg (lock) = malloc (sizeof (omp_lock_t));
1091debfc3dSmrg #endif
1101debfc3dSmrg gomp_init_lock_30 (omp_lock_arg (lock));
1111debfc3dSmrg }
1121debfc3dSmrg
1131debfc3dSmrg void
gomp_init_nest_lock__30(omp_nest_lock_arg_t lock)1141debfc3dSmrg gomp_init_nest_lock__30 (omp_nest_lock_arg_t lock)
1151debfc3dSmrg {
1161debfc3dSmrg #ifndef OMP_NEST_LOCK_DIRECT
1171debfc3dSmrg omp_nest_lock_arg (lock) = malloc (sizeof (omp_nest_lock_t));
1181debfc3dSmrg #endif
1191debfc3dSmrg gomp_init_nest_lock_30 (omp_nest_lock_arg (lock));
1201debfc3dSmrg }
1211debfc3dSmrg
1221debfc3dSmrg void
gomp_destroy_lock__30(omp_lock_arg_t lock)1231debfc3dSmrg gomp_destroy_lock__30 (omp_lock_arg_t lock)
1241debfc3dSmrg {
1251debfc3dSmrg gomp_destroy_lock_30 (omp_lock_arg (lock));
1261debfc3dSmrg #ifndef OMP_LOCK_DIRECT
1271debfc3dSmrg free (omp_lock_arg (lock));
1281debfc3dSmrg omp_lock_arg (lock) = NULL;
1291debfc3dSmrg #endif
1301debfc3dSmrg }
1311debfc3dSmrg
1321debfc3dSmrg void
gomp_destroy_nest_lock__30(omp_nest_lock_arg_t lock)1331debfc3dSmrg gomp_destroy_nest_lock__30 (omp_nest_lock_arg_t lock)
1341debfc3dSmrg {
1351debfc3dSmrg gomp_destroy_nest_lock_30 (omp_nest_lock_arg (lock));
1361debfc3dSmrg #ifndef OMP_NEST_LOCK_DIRECT
1371debfc3dSmrg free (omp_nest_lock_arg (lock));
1381debfc3dSmrg omp_nest_lock_arg (lock) = NULL;
1391debfc3dSmrg #endif
1401debfc3dSmrg }
1411debfc3dSmrg
1421debfc3dSmrg void
gomp_set_lock__30(omp_lock_arg_t lock)1431debfc3dSmrg gomp_set_lock__30 (omp_lock_arg_t lock)
1441debfc3dSmrg {
1451debfc3dSmrg gomp_set_lock_30 (omp_lock_arg (lock));
1461debfc3dSmrg }
1471debfc3dSmrg
1481debfc3dSmrg void
gomp_set_nest_lock__30(omp_nest_lock_arg_t lock)1491debfc3dSmrg gomp_set_nest_lock__30 (omp_nest_lock_arg_t lock)
1501debfc3dSmrg {
1511debfc3dSmrg gomp_set_nest_lock_30 (omp_nest_lock_arg (lock));
1521debfc3dSmrg }
1531debfc3dSmrg
1541debfc3dSmrg void
gomp_unset_lock__30(omp_lock_arg_t lock)1551debfc3dSmrg gomp_unset_lock__30 (omp_lock_arg_t lock)
1561debfc3dSmrg {
1571debfc3dSmrg gomp_unset_lock_30 (omp_lock_arg (lock));
1581debfc3dSmrg }
1591debfc3dSmrg
1601debfc3dSmrg void
gomp_unset_nest_lock__30(omp_nest_lock_arg_t lock)1611debfc3dSmrg gomp_unset_nest_lock__30 (omp_nest_lock_arg_t lock)
1621debfc3dSmrg {
1631debfc3dSmrg gomp_unset_nest_lock_30 (omp_nest_lock_arg (lock));
1641debfc3dSmrg }
1651debfc3dSmrg
1661debfc3dSmrg int32_t
gomp_test_lock__30(omp_lock_arg_t lock)1671debfc3dSmrg gomp_test_lock__30 (omp_lock_arg_t lock)
1681debfc3dSmrg {
1691debfc3dSmrg return gomp_test_lock_30 (omp_lock_arg (lock));
1701debfc3dSmrg }
1711debfc3dSmrg
1721debfc3dSmrg int32_t
gomp_test_nest_lock__30(omp_nest_lock_arg_t lock)1731debfc3dSmrg gomp_test_nest_lock__30 (omp_nest_lock_arg_t lock)
1741debfc3dSmrg {
1751debfc3dSmrg return gomp_test_nest_lock_30 (omp_nest_lock_arg (lock));
1761debfc3dSmrg }
1771debfc3dSmrg
1781debfc3dSmrg #ifdef LIBGOMP_GNU_SYMBOL_VERSIONING
1791debfc3dSmrg void
gomp_init_lock__25(omp_lock_25_arg_t lock)1801debfc3dSmrg gomp_init_lock__25 (omp_lock_25_arg_t lock)
1811debfc3dSmrg {
1821debfc3dSmrg #ifndef OMP_LOCK_25_DIRECT
1831debfc3dSmrg omp_lock_25_arg (lock) = malloc (sizeof (omp_lock_25_t));
1841debfc3dSmrg #endif
1851debfc3dSmrg gomp_init_lock_25 (omp_lock_25_arg (lock));
1861debfc3dSmrg }
1871debfc3dSmrg
1881debfc3dSmrg void
gomp_init_nest_lock__25(omp_nest_lock_25_arg_t lock)1891debfc3dSmrg gomp_init_nest_lock__25 (omp_nest_lock_25_arg_t lock)
1901debfc3dSmrg {
1911debfc3dSmrg #ifndef OMP_NEST_LOCK_25_DIRECT
1921debfc3dSmrg omp_nest_lock_25_arg (lock) = malloc (sizeof (omp_nest_lock_25_t));
1931debfc3dSmrg #endif
1941debfc3dSmrg gomp_init_nest_lock_25 (omp_nest_lock_25_arg (lock));
1951debfc3dSmrg }
1961debfc3dSmrg
1971debfc3dSmrg void
gomp_destroy_lock__25(omp_lock_25_arg_t lock)1981debfc3dSmrg gomp_destroy_lock__25 (omp_lock_25_arg_t lock)
1991debfc3dSmrg {
2001debfc3dSmrg gomp_destroy_lock_25 (omp_lock_25_arg (lock));
2011debfc3dSmrg #ifndef OMP_LOCK_25_DIRECT
2021debfc3dSmrg free (omp_lock_25_arg (lock));
2031debfc3dSmrg omp_lock_25_arg (lock) = NULL;
2041debfc3dSmrg #endif
2051debfc3dSmrg }
2061debfc3dSmrg
2071debfc3dSmrg void
gomp_destroy_nest_lock__25(omp_nest_lock_25_arg_t lock)2081debfc3dSmrg gomp_destroy_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2091debfc3dSmrg {
2101debfc3dSmrg gomp_destroy_nest_lock_25 (omp_nest_lock_25_arg (lock));
2111debfc3dSmrg #ifndef OMP_NEST_LOCK_25_DIRECT
2121debfc3dSmrg free (omp_nest_lock_25_arg (lock));
2131debfc3dSmrg omp_nest_lock_25_arg (lock) = NULL;
2141debfc3dSmrg #endif
2151debfc3dSmrg }
2161debfc3dSmrg
2171debfc3dSmrg void
gomp_set_lock__25(omp_lock_25_arg_t lock)2181debfc3dSmrg gomp_set_lock__25 (omp_lock_25_arg_t lock)
2191debfc3dSmrg {
2201debfc3dSmrg gomp_set_lock_25 (omp_lock_25_arg (lock));
2211debfc3dSmrg }
2221debfc3dSmrg
2231debfc3dSmrg void
gomp_set_nest_lock__25(omp_nest_lock_25_arg_t lock)2241debfc3dSmrg gomp_set_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2251debfc3dSmrg {
2261debfc3dSmrg gomp_set_nest_lock_25 (omp_nest_lock_25_arg (lock));
2271debfc3dSmrg }
2281debfc3dSmrg
2291debfc3dSmrg void
gomp_unset_lock__25(omp_lock_25_arg_t lock)2301debfc3dSmrg gomp_unset_lock__25 (omp_lock_25_arg_t lock)
2311debfc3dSmrg {
2321debfc3dSmrg gomp_unset_lock_25 (omp_lock_25_arg (lock));
2331debfc3dSmrg }
2341debfc3dSmrg
2351debfc3dSmrg void
gomp_unset_nest_lock__25(omp_nest_lock_25_arg_t lock)2361debfc3dSmrg gomp_unset_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2371debfc3dSmrg {
2381debfc3dSmrg gomp_unset_nest_lock_25 (omp_nest_lock_25_arg (lock));
2391debfc3dSmrg }
2401debfc3dSmrg
2411debfc3dSmrg int32_t
gomp_test_lock__25(omp_lock_25_arg_t lock)2421debfc3dSmrg gomp_test_lock__25 (omp_lock_25_arg_t lock)
2431debfc3dSmrg {
2441debfc3dSmrg return gomp_test_lock_25 (omp_lock_25_arg (lock));
2451debfc3dSmrg }
2461debfc3dSmrg
2471debfc3dSmrg int32_t
gomp_test_nest_lock__25(omp_nest_lock_25_arg_t lock)2481debfc3dSmrg gomp_test_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2491debfc3dSmrg {
2501debfc3dSmrg return gomp_test_nest_lock_25 (omp_nest_lock_25_arg (lock));
2511debfc3dSmrg }
2521debfc3dSmrg
2531debfc3dSmrg omp_lock_symver (omp_init_lock_)
omp_lock_symver(omp_destroy_lock_)2541debfc3dSmrg omp_lock_symver (omp_destroy_lock_)
2551debfc3dSmrg omp_lock_symver (omp_set_lock_)
2561debfc3dSmrg omp_lock_symver (omp_unset_lock_)
2571debfc3dSmrg omp_lock_symver (omp_test_lock_)
2581debfc3dSmrg omp_lock_symver (omp_init_nest_lock_)
2591debfc3dSmrg omp_lock_symver (omp_destroy_nest_lock_)
2601debfc3dSmrg omp_lock_symver (omp_set_nest_lock_)
2611debfc3dSmrg omp_lock_symver (omp_unset_nest_lock_)
2621debfc3dSmrg omp_lock_symver (omp_test_nest_lock_)
2631debfc3dSmrg #endif
2641debfc3dSmrg
2651debfc3dSmrg #define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN)
2661debfc3dSmrg
2671debfc3dSmrg void
2681debfc3dSmrg omp_set_dynamic_ (const int32_t *set)
2691debfc3dSmrg {
2701debfc3dSmrg omp_set_dynamic (*set);
2711debfc3dSmrg }
2721debfc3dSmrg
2731debfc3dSmrg void
omp_set_dynamic_8_(const int64_t * set)2741debfc3dSmrg omp_set_dynamic_8_ (const int64_t *set)
2751debfc3dSmrg {
2761debfc3dSmrg omp_set_dynamic (!!*set);
2771debfc3dSmrg }
2781debfc3dSmrg
2791debfc3dSmrg void
omp_set_nested_(const int32_t * set)2801debfc3dSmrg omp_set_nested_ (const int32_t *set)
2811debfc3dSmrg {
2821debfc3dSmrg omp_set_nested (*set);
2831debfc3dSmrg }
2841debfc3dSmrg
2851debfc3dSmrg void
omp_set_nested_8_(const int64_t * set)2861debfc3dSmrg omp_set_nested_8_ (const int64_t *set)
2871debfc3dSmrg {
2881debfc3dSmrg omp_set_nested (!!*set);
2891debfc3dSmrg }
2901debfc3dSmrg
2911debfc3dSmrg void
omp_set_num_threads_(const int32_t * set)2921debfc3dSmrg omp_set_num_threads_ (const int32_t *set)
2931debfc3dSmrg {
2941debfc3dSmrg omp_set_num_threads (*set);
2951debfc3dSmrg }
2961debfc3dSmrg
2971debfc3dSmrg void
omp_set_num_threads_8_(const int64_t * set)2981debfc3dSmrg omp_set_num_threads_8_ (const int64_t *set)
2991debfc3dSmrg {
3001debfc3dSmrg omp_set_num_threads (TO_INT (*set));
3011debfc3dSmrg }
3021debfc3dSmrg
3031debfc3dSmrg int32_t
omp_get_dynamic_(void)3041debfc3dSmrg omp_get_dynamic_ (void)
3051debfc3dSmrg {
3061debfc3dSmrg return omp_get_dynamic ();
3071debfc3dSmrg }
3081debfc3dSmrg
3091debfc3dSmrg int32_t
omp_get_nested_(void)3101debfc3dSmrg omp_get_nested_ (void)
3111debfc3dSmrg {
3121debfc3dSmrg return omp_get_nested ();
3131debfc3dSmrg }
3141debfc3dSmrg
3151debfc3dSmrg int32_t
omp_in_parallel_(void)3161debfc3dSmrg omp_in_parallel_ (void)
3171debfc3dSmrg {
3181debfc3dSmrg return omp_in_parallel ();
3191debfc3dSmrg }
3201debfc3dSmrg
3211debfc3dSmrg int32_t
omp_get_max_threads_(void)3221debfc3dSmrg omp_get_max_threads_ (void)
3231debfc3dSmrg {
3241debfc3dSmrg return omp_get_max_threads ();
3251debfc3dSmrg }
3261debfc3dSmrg
3271debfc3dSmrg int32_t
omp_get_num_procs_(void)3281debfc3dSmrg omp_get_num_procs_ (void)
3291debfc3dSmrg {
3301debfc3dSmrg return omp_get_num_procs ();
3311debfc3dSmrg }
3321debfc3dSmrg
3331debfc3dSmrg int32_t
omp_get_num_threads_(void)3341debfc3dSmrg omp_get_num_threads_ (void)
3351debfc3dSmrg {
3361debfc3dSmrg return omp_get_num_threads ();
3371debfc3dSmrg }
3381debfc3dSmrg
3391debfc3dSmrg int32_t
omp_get_thread_num_(void)3401debfc3dSmrg omp_get_thread_num_ (void)
3411debfc3dSmrg {
3421debfc3dSmrg return omp_get_thread_num ();
3431debfc3dSmrg }
3441debfc3dSmrg
3451debfc3dSmrg double
omp_get_wtick_(void)3461debfc3dSmrg omp_get_wtick_ (void)
3471debfc3dSmrg {
3481debfc3dSmrg return omp_get_wtick ();
3491debfc3dSmrg }
3501debfc3dSmrg
3511debfc3dSmrg double
omp_get_wtime_(void)3521debfc3dSmrg omp_get_wtime_ (void)
3531debfc3dSmrg {
3541debfc3dSmrg return omp_get_wtime ();
3551debfc3dSmrg }
3561debfc3dSmrg
3571debfc3dSmrg void
omp_set_schedule_(const int32_t * kind,const int32_t * chunk_size)3581debfc3dSmrg omp_set_schedule_ (const int32_t *kind, const int32_t *chunk_size)
3591debfc3dSmrg {
3601debfc3dSmrg omp_set_schedule (*kind, *chunk_size);
3611debfc3dSmrg }
3621debfc3dSmrg
3631debfc3dSmrg void
omp_set_schedule_8_(const int32_t * kind,const int64_t * chunk_size)3641debfc3dSmrg omp_set_schedule_8_ (const int32_t *kind, const int64_t *chunk_size)
3651debfc3dSmrg {
3661debfc3dSmrg omp_set_schedule (*kind, TO_INT (*chunk_size));
3671debfc3dSmrg }
3681debfc3dSmrg
3691debfc3dSmrg void
omp_get_schedule_(int32_t * kind,int32_t * chunk_size)3701debfc3dSmrg omp_get_schedule_ (int32_t *kind, int32_t *chunk_size)
3711debfc3dSmrg {
3721debfc3dSmrg omp_sched_t k;
3731debfc3dSmrg int cs;
3741debfc3dSmrg omp_get_schedule (&k, &cs);
375c0a68be4Smrg /* For now mask off GFS_MONOTONIC, because OpenMP 4.5 code will not
376c0a68be4Smrg expect to see it. */
377c0a68be4Smrg *kind = k & ~GFS_MONOTONIC;
3781debfc3dSmrg *chunk_size = cs;
3791debfc3dSmrg }
3801debfc3dSmrg
3811debfc3dSmrg void
omp_get_schedule_8_(int32_t * kind,int64_t * chunk_size)3821debfc3dSmrg omp_get_schedule_8_ (int32_t *kind, int64_t *chunk_size)
3831debfc3dSmrg {
3841debfc3dSmrg omp_sched_t k;
3851debfc3dSmrg int cs;
3861debfc3dSmrg omp_get_schedule (&k, &cs);
387c0a68be4Smrg /* See above. */
388c0a68be4Smrg *kind = k & ~GFS_MONOTONIC;
3891debfc3dSmrg *chunk_size = cs;
3901debfc3dSmrg }
3911debfc3dSmrg
3921debfc3dSmrg int32_t
omp_get_thread_limit_(void)3931debfc3dSmrg omp_get_thread_limit_ (void)
3941debfc3dSmrg {
3951debfc3dSmrg return omp_get_thread_limit ();
3961debfc3dSmrg }
3971debfc3dSmrg
3981debfc3dSmrg void
omp_set_max_active_levels_(const int32_t * levels)3991debfc3dSmrg omp_set_max_active_levels_ (const int32_t *levels)
4001debfc3dSmrg {
4011debfc3dSmrg omp_set_max_active_levels (*levels);
4021debfc3dSmrg }
4031debfc3dSmrg
4041debfc3dSmrg void
omp_set_max_active_levels_8_(const int64_t * levels)4051debfc3dSmrg omp_set_max_active_levels_8_ (const int64_t *levels)
4061debfc3dSmrg {
4071debfc3dSmrg omp_set_max_active_levels (TO_INT (*levels));
4081debfc3dSmrg }
4091debfc3dSmrg
4101debfc3dSmrg int32_t
omp_get_max_active_levels_(void)4111debfc3dSmrg omp_get_max_active_levels_ (void)
4121debfc3dSmrg {
4131debfc3dSmrg return omp_get_max_active_levels ();
4141debfc3dSmrg }
4151debfc3dSmrg
4161debfc3dSmrg int32_t
omp_get_level_(void)4171debfc3dSmrg omp_get_level_ (void)
4181debfc3dSmrg {
4191debfc3dSmrg return omp_get_level ();
4201debfc3dSmrg }
4211debfc3dSmrg
4221debfc3dSmrg int32_t
omp_get_ancestor_thread_num_(const int32_t * level)4231debfc3dSmrg omp_get_ancestor_thread_num_ (const int32_t *level)
4241debfc3dSmrg {
4251debfc3dSmrg return omp_get_ancestor_thread_num (*level);
4261debfc3dSmrg }
4271debfc3dSmrg
4281debfc3dSmrg int32_t
omp_get_ancestor_thread_num_8_(const int64_t * level)4291debfc3dSmrg omp_get_ancestor_thread_num_8_ (const int64_t *level)
4301debfc3dSmrg {
4311debfc3dSmrg return omp_get_ancestor_thread_num (TO_INT (*level));
4321debfc3dSmrg }
4331debfc3dSmrg
4341debfc3dSmrg int32_t
omp_get_team_size_(const int32_t * level)4351debfc3dSmrg omp_get_team_size_ (const int32_t *level)
4361debfc3dSmrg {
4371debfc3dSmrg return omp_get_team_size (*level);
4381debfc3dSmrg }
4391debfc3dSmrg
4401debfc3dSmrg int32_t
omp_get_team_size_8_(const int64_t * level)4411debfc3dSmrg omp_get_team_size_8_ (const int64_t *level)
4421debfc3dSmrg {
4431debfc3dSmrg return omp_get_team_size (TO_INT (*level));
4441debfc3dSmrg }
4451debfc3dSmrg
4461debfc3dSmrg int32_t
omp_get_active_level_(void)4471debfc3dSmrg omp_get_active_level_ (void)
4481debfc3dSmrg {
4491debfc3dSmrg return omp_get_active_level ();
4501debfc3dSmrg }
4511debfc3dSmrg
4521debfc3dSmrg int32_t
omp_in_final_(void)4531debfc3dSmrg omp_in_final_ (void)
4541debfc3dSmrg {
4551debfc3dSmrg return omp_in_final ();
4561debfc3dSmrg }
4571debfc3dSmrg
4581debfc3dSmrg int32_t
omp_get_cancellation_(void)4591debfc3dSmrg omp_get_cancellation_ (void)
4601debfc3dSmrg {
4611debfc3dSmrg return omp_get_cancellation ();
4621debfc3dSmrg }
4631debfc3dSmrg
4641debfc3dSmrg int32_t
omp_get_proc_bind_(void)4651debfc3dSmrg omp_get_proc_bind_ (void)
4661debfc3dSmrg {
4671debfc3dSmrg return omp_get_proc_bind ();
4681debfc3dSmrg }
4691debfc3dSmrg
4701debfc3dSmrg int32_t
omp_get_num_places_(void)4711debfc3dSmrg omp_get_num_places_ (void)
4721debfc3dSmrg {
4731debfc3dSmrg return omp_get_num_places ();
4741debfc3dSmrg }
4751debfc3dSmrg
4761debfc3dSmrg int32_t
omp_get_place_num_procs_(const int32_t * place_num)4771debfc3dSmrg omp_get_place_num_procs_ (const int32_t *place_num)
4781debfc3dSmrg {
4791debfc3dSmrg return omp_get_place_num_procs (*place_num);
4801debfc3dSmrg }
4811debfc3dSmrg
4821debfc3dSmrg int32_t
omp_get_place_num_procs_8_(const int64_t * place_num)4831debfc3dSmrg omp_get_place_num_procs_8_ (const int64_t *place_num)
4841debfc3dSmrg {
4851debfc3dSmrg return omp_get_place_num_procs (TO_INT (*place_num));
4861debfc3dSmrg }
4871debfc3dSmrg
4881debfc3dSmrg void
omp_get_place_proc_ids_(const int32_t * place_num,int32_t * ids)4891debfc3dSmrg omp_get_place_proc_ids_ (const int32_t *place_num, int32_t *ids)
4901debfc3dSmrg {
4911debfc3dSmrg omp_get_place_proc_ids (*place_num, (int *) ids);
4921debfc3dSmrg }
4931debfc3dSmrg
4941debfc3dSmrg void
omp_get_place_proc_ids_8_(const int64_t * place_num,int64_t * ids)4951debfc3dSmrg omp_get_place_proc_ids_8_ (const int64_t *place_num, int64_t *ids)
4961debfc3dSmrg {
4971debfc3dSmrg gomp_get_place_proc_ids_8 (TO_INT (*place_num), ids);
4981debfc3dSmrg }
4991debfc3dSmrg
5001debfc3dSmrg int32_t
omp_get_place_num_(void)5011debfc3dSmrg omp_get_place_num_ (void)
5021debfc3dSmrg {
5031debfc3dSmrg return omp_get_place_num ();
5041debfc3dSmrg }
5051debfc3dSmrg
5061debfc3dSmrg int32_t
omp_get_partition_num_places_(void)5071debfc3dSmrg omp_get_partition_num_places_ (void)
5081debfc3dSmrg {
5091debfc3dSmrg return omp_get_partition_num_places ();
5101debfc3dSmrg }
5111debfc3dSmrg
5121debfc3dSmrg void
omp_get_partition_place_nums_(int32_t * place_nums)5131debfc3dSmrg omp_get_partition_place_nums_ (int32_t *place_nums)
5141debfc3dSmrg {
5151debfc3dSmrg omp_get_partition_place_nums ((int *) place_nums);
5161debfc3dSmrg }
5171debfc3dSmrg
5181debfc3dSmrg void
omp_get_partition_place_nums_8_(int64_t * place_nums)5191debfc3dSmrg omp_get_partition_place_nums_8_ (int64_t *place_nums)
5201debfc3dSmrg {
5211debfc3dSmrg if (gomp_places_list == NULL)
5221debfc3dSmrg return;
5231debfc3dSmrg
5241debfc3dSmrg struct gomp_thread *thr = gomp_thread ();
5251debfc3dSmrg if (thr->place == 0)
5261debfc3dSmrg gomp_init_affinity ();
5271debfc3dSmrg
5281debfc3dSmrg unsigned int i;
5291debfc3dSmrg for (i = 0; i < thr->ts.place_partition_len; i++)
5301debfc3dSmrg *place_nums++ = (int64_t) thr->ts.place_partition_off + i;
5311debfc3dSmrg }
5321debfc3dSmrg
5331debfc3dSmrg void
omp_set_default_device_(const int32_t * device_num)5341debfc3dSmrg omp_set_default_device_ (const int32_t *device_num)
5351debfc3dSmrg {
5361debfc3dSmrg return omp_set_default_device (*device_num);
5371debfc3dSmrg }
5381debfc3dSmrg
5391debfc3dSmrg void
omp_set_default_device_8_(const int64_t * device_num)5401debfc3dSmrg omp_set_default_device_8_ (const int64_t *device_num)
5411debfc3dSmrg {
5421debfc3dSmrg return omp_set_default_device (TO_INT (*device_num));
5431debfc3dSmrg }
5441debfc3dSmrg
5451debfc3dSmrg int32_t
omp_get_default_device_(void)5461debfc3dSmrg omp_get_default_device_ (void)
5471debfc3dSmrg {
5481debfc3dSmrg return omp_get_default_device ();
5491debfc3dSmrg }
5501debfc3dSmrg
5511debfc3dSmrg int32_t
omp_get_num_devices_(void)5521debfc3dSmrg omp_get_num_devices_ (void)
5531debfc3dSmrg {
5541debfc3dSmrg return omp_get_num_devices ();
5551debfc3dSmrg }
5561debfc3dSmrg
5571debfc3dSmrg int32_t
omp_get_num_teams_(void)5581debfc3dSmrg omp_get_num_teams_ (void)
5591debfc3dSmrg {
5601debfc3dSmrg return omp_get_num_teams ();
5611debfc3dSmrg }
5621debfc3dSmrg
5631debfc3dSmrg int32_t
omp_get_team_num_(void)5641debfc3dSmrg omp_get_team_num_ (void)
5651debfc3dSmrg {
5661debfc3dSmrg return omp_get_team_num ();
5671debfc3dSmrg }
5681debfc3dSmrg
5691debfc3dSmrg int32_t
omp_is_initial_device_(void)5701debfc3dSmrg omp_is_initial_device_ (void)
5711debfc3dSmrg {
5721debfc3dSmrg return omp_is_initial_device ();
5731debfc3dSmrg }
5741debfc3dSmrg
5751debfc3dSmrg int32_t
omp_get_initial_device_(void)5761debfc3dSmrg omp_get_initial_device_ (void)
5771debfc3dSmrg {
5781debfc3dSmrg return omp_get_initial_device ();
5791debfc3dSmrg }
5801debfc3dSmrg
5811debfc3dSmrg int32_t
omp_get_max_task_priority_(void)5821debfc3dSmrg omp_get_max_task_priority_ (void)
5831debfc3dSmrg {
5841debfc3dSmrg return omp_get_max_task_priority ();
5851debfc3dSmrg }
586c0a68be4Smrg
587c0a68be4Smrg void
omp_set_affinity_format_(const char * format,size_t format_len)588c0a68be4Smrg omp_set_affinity_format_ (const char *format, size_t format_len)
589c0a68be4Smrg {
590c0a68be4Smrg gomp_set_affinity_format (format, format_len);
591c0a68be4Smrg }
592c0a68be4Smrg
593c0a68be4Smrg int32_t
omp_get_affinity_format_(char * buffer,size_t buffer_len)594c0a68be4Smrg omp_get_affinity_format_ (char *buffer, size_t buffer_len)
595c0a68be4Smrg {
596c0a68be4Smrg size_t len = strlen (gomp_affinity_format_var);
597c0a68be4Smrg if (buffer_len)
598c0a68be4Smrg {
599c0a68be4Smrg if (len < buffer_len)
600c0a68be4Smrg {
601c0a68be4Smrg memcpy (buffer, gomp_affinity_format_var, len);
602c0a68be4Smrg memset (buffer + len, ' ', buffer_len - len);
603c0a68be4Smrg }
604c0a68be4Smrg else
605c0a68be4Smrg memcpy (buffer, gomp_affinity_format_var, buffer_len);
606c0a68be4Smrg }
607c0a68be4Smrg return len;
608c0a68be4Smrg }
609c0a68be4Smrg
610c0a68be4Smrg void
omp_display_affinity_(const char * format,size_t format_len)611c0a68be4Smrg omp_display_affinity_ (const char *format, size_t format_len)
612c0a68be4Smrg {
613c0a68be4Smrg char *fmt = NULL, fmt_buf[256];
614c0a68be4Smrg char buf[512];
615c0a68be4Smrg if (format_len)
616c0a68be4Smrg {
617c0a68be4Smrg fmt = format_len < 256 ? fmt_buf : gomp_malloc (format_len + 1);
618c0a68be4Smrg memcpy (fmt, format, format_len);
619c0a68be4Smrg fmt[format_len] = '\0';
620c0a68be4Smrg }
621c0a68be4Smrg struct gomp_thread *thr = gomp_thread ();
622c0a68be4Smrg size_t ret
623c0a68be4Smrg = gomp_display_affinity (buf, sizeof buf,
624c0a68be4Smrg format_len ? fmt : gomp_affinity_format_var,
625c0a68be4Smrg gomp_thread_self (), &thr->ts, thr->place);
626c0a68be4Smrg if (ret < sizeof buf)
627c0a68be4Smrg {
628c0a68be4Smrg buf[ret] = '\n';
629c0a68be4Smrg gomp_print_string (buf, ret + 1);
630c0a68be4Smrg }
631c0a68be4Smrg else
632c0a68be4Smrg {
633c0a68be4Smrg char *b = gomp_malloc (ret + 1);
634c0a68be4Smrg gomp_display_affinity (buf, sizeof buf,
635c0a68be4Smrg format_len ? fmt : gomp_affinity_format_var,
636c0a68be4Smrg gomp_thread_self (), &thr->ts, thr->place);
637c0a68be4Smrg b[ret] = '\n';
638c0a68be4Smrg gomp_print_string (b, ret + 1);
639c0a68be4Smrg free (b);
640c0a68be4Smrg }
641c0a68be4Smrg if (fmt && fmt != fmt_buf)
642c0a68be4Smrg free (fmt);
643c0a68be4Smrg }
644c0a68be4Smrg
645c0a68be4Smrg int32_t
omp_capture_affinity_(char * buffer,const char * format,size_t buffer_len,size_t format_len)646c0a68be4Smrg omp_capture_affinity_ (char *buffer, const char *format,
647c0a68be4Smrg size_t buffer_len, size_t format_len)
648c0a68be4Smrg {
649c0a68be4Smrg char *fmt = NULL, fmt_buf[256];
650c0a68be4Smrg if (format_len)
651c0a68be4Smrg {
652c0a68be4Smrg fmt = format_len < 256 ? fmt_buf : gomp_malloc (format_len + 1);
653c0a68be4Smrg memcpy (fmt, format, format_len);
654c0a68be4Smrg fmt[format_len] = '\0';
655c0a68be4Smrg }
656c0a68be4Smrg struct gomp_thread *thr = gomp_thread ();
657c0a68be4Smrg size_t ret
658c0a68be4Smrg = gomp_display_affinity (buffer, buffer_len,
659c0a68be4Smrg format_len ? fmt : gomp_affinity_format_var,
660c0a68be4Smrg gomp_thread_self (), &thr->ts, thr->place);
661c0a68be4Smrg if (fmt && fmt != fmt_buf)
662c0a68be4Smrg free (fmt);
663c0a68be4Smrg if (ret < buffer_len)
664c0a68be4Smrg memset (buffer + ret, ' ', buffer_len - ret);
665c0a68be4Smrg return ret;
666c0a68be4Smrg }
667c0a68be4Smrg
668c0a68be4Smrg int32_t
omp_pause_resource_(const int32_t * kind,const int32_t * device_num)669c0a68be4Smrg omp_pause_resource_ (const int32_t *kind, const int32_t *device_num)
670c0a68be4Smrg {
671c0a68be4Smrg return omp_pause_resource (*kind, *device_num);
672c0a68be4Smrg }
673c0a68be4Smrg
674c0a68be4Smrg int32_t
omp_pause_resource_all_(const int32_t * kind)675c0a68be4Smrg omp_pause_resource_all_ (const int32_t *kind)
676c0a68be4Smrg {
677c0a68be4Smrg return omp_pause_resource_all (*kind);
678c0a68be4Smrg }
679