1b1e83836Smrg /* Copyright (C) 2005-2022 Free Software Foundation, Inc.
24fee23f9Smrg Contributed by Jakub Jelinek <jakub@redhat.com>.
34fee23f9Smrg
44d5abbe8Smrg This file is part of the GNU Offloading and Multi Processing Library
54d5abbe8Smrg (libgomp).
64fee23f9Smrg
74fee23f9Smrg Libgomp is free software; you can redistribute it and/or modify it
84fee23f9Smrg under the terms of the GNU General Public License as published by
94fee23f9Smrg the Free Software Foundation; either version 3, or (at your option)
104fee23f9Smrg any later version.
114fee23f9Smrg
124fee23f9Smrg Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY
134fee23f9Smrg WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
144fee23f9Smrg FOR A PARTICULAR PURPOSE. See the GNU General Public License for
154fee23f9Smrg more details.
164fee23f9Smrg
174fee23f9Smrg Under Section 7 of GPL version 3, you are granted additional
184fee23f9Smrg permissions described in the GCC Runtime Library Exception, version
194fee23f9Smrg 3.1, as published by the Free Software Foundation.
204fee23f9Smrg
214fee23f9Smrg You should have received a copy of the GNU General Public License and
224fee23f9Smrg a copy of the GCC Runtime Library Exception along with this program;
234fee23f9Smrg see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
244fee23f9Smrg <http://www.gnu.org/licenses/>. */
254fee23f9Smrg
264fee23f9Smrg /* This file contains Fortran wrapper routines. */
274fee23f9Smrg
284fee23f9Smrg #include "libgomp.h"
294fee23f9Smrg #include "libgomp_f.h"
304fee23f9Smrg #include <stdlib.h>
31181254a7Smrg #include <stdio.h>
32181254a7Smrg #include <string.h>
33a9d89c3bSskrll #include <limits.h>
344fee23f9Smrg
354fee23f9Smrg #ifdef HAVE_ATTRIBUTE_ALIAS
364fee23f9Smrg /* Use internal aliases if possible. */
374fee23f9Smrg # ifndef LIBGOMP_GNU_SYMBOL_VERSIONING
384fee23f9Smrg ialias_redirect (omp_init_lock)
ialias_redirect(omp_init_nest_lock)394fee23f9Smrg ialias_redirect (omp_init_nest_lock)
404fee23f9Smrg ialias_redirect (omp_destroy_lock)
414fee23f9Smrg ialias_redirect (omp_destroy_nest_lock)
424fee23f9Smrg ialias_redirect (omp_set_lock)
434fee23f9Smrg ialias_redirect (omp_set_nest_lock)
444fee23f9Smrg ialias_redirect (omp_unset_lock)
454fee23f9Smrg ialias_redirect (omp_unset_nest_lock)
464fee23f9Smrg ialias_redirect (omp_test_lock)
474fee23f9Smrg ialias_redirect (omp_test_nest_lock)
484fee23f9Smrg # endif
494fee23f9Smrg ialias_redirect (omp_set_dynamic)
504fee23f9Smrg ialias_redirect (omp_get_dynamic)
51b1e83836Smrg #pragma GCC diagnostic push
52b1e83836Smrg #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
53b1e83836Smrg ialias_redirect (omp_set_nested)
544fee23f9Smrg ialias_redirect (omp_get_nested)
55b1e83836Smrg #pragma GCC diagnostic pop
56b1e83836Smrg ialias_redirect (omp_set_num_threads)
574fee23f9Smrg ialias_redirect (omp_in_parallel)
584fee23f9Smrg ialias_redirect (omp_get_max_threads)
594fee23f9Smrg ialias_redirect (omp_get_num_procs)
604fee23f9Smrg ialias_redirect (omp_get_num_threads)
614fee23f9Smrg ialias_redirect (omp_get_thread_num)
624fee23f9Smrg ialias_redirect (omp_get_wtick)
634fee23f9Smrg ialias_redirect (omp_get_wtime)
644fee23f9Smrg ialias_redirect (omp_set_schedule)
654fee23f9Smrg ialias_redirect (omp_get_schedule)
664fee23f9Smrg ialias_redirect (omp_get_thread_limit)
674fee23f9Smrg ialias_redirect (omp_set_max_active_levels)
684fee23f9Smrg ialias_redirect (omp_get_max_active_levels)
69b1e83836Smrg ialias_redirect (omp_get_supported_active_levels)
70b1e83836Smrg ialias_redirect (omp_set_num_teams)
71b1e83836Smrg ialias_redirect (omp_get_max_teams)
72b1e83836Smrg ialias_redirect (omp_set_teams_thread_limit)
73b1e83836Smrg ialias_redirect (omp_get_teams_thread_limit)
744fee23f9Smrg ialias_redirect (omp_get_level)
754fee23f9Smrg ialias_redirect (omp_get_ancestor_thread_num)
764fee23f9Smrg ialias_redirect (omp_get_team_size)
774fee23f9Smrg ialias_redirect (omp_get_active_level)
7848fb7bfaSmrg ialias_redirect (omp_in_final)
794d5abbe8Smrg ialias_redirect (omp_get_cancellation)
804d5abbe8Smrg ialias_redirect (omp_get_proc_bind)
81f9a78e0eSmrg ialias_redirect (omp_get_num_places)
82f9a78e0eSmrg ialias_redirect (omp_get_place_num_procs)
83f9a78e0eSmrg ialias_redirect (omp_get_place_proc_ids)
84f9a78e0eSmrg ialias_redirect (omp_get_place_num)
85f9a78e0eSmrg ialias_redirect (omp_get_partition_num_places)
86f9a78e0eSmrg ialias_redirect (omp_get_partition_place_nums)
874d5abbe8Smrg ialias_redirect (omp_set_default_device)
884d5abbe8Smrg ialias_redirect (omp_get_default_device)
894d5abbe8Smrg ialias_redirect (omp_get_num_devices)
90b1e83836Smrg ialias_redirect (omp_get_device_num)
914d5abbe8Smrg ialias_redirect (omp_get_num_teams)
924d5abbe8Smrg ialias_redirect (omp_get_team_num)
934d5abbe8Smrg ialias_redirect (omp_is_initial_device)
94f9a78e0eSmrg ialias_redirect (omp_get_initial_device)
95f9a78e0eSmrg ialias_redirect (omp_get_max_task_priority)
96181254a7Smrg ialias_redirect (omp_pause_resource)
97181254a7Smrg ialias_redirect (omp_pause_resource_all)
98b1e83836Smrg ialias_redirect (omp_init_allocator)
99b1e83836Smrg ialias_redirect (omp_destroy_allocator)
100b1e83836Smrg ialias_redirect (omp_set_default_allocator)
101b1e83836Smrg ialias_redirect (omp_get_default_allocator)
102b1e83836Smrg ialias_redirect (omp_display_env)
103b1e83836Smrg ialias_redirect (omp_fulfill_event)
1044fee23f9Smrg #endif
1054fee23f9Smrg
1064fee23f9Smrg #ifndef LIBGOMP_GNU_SYMBOL_VERSIONING
1074fee23f9Smrg # define gomp_init_lock__30 omp_init_lock_
1084fee23f9Smrg # define gomp_destroy_lock__30 omp_destroy_lock_
1094fee23f9Smrg # define gomp_set_lock__30 omp_set_lock_
1104fee23f9Smrg # define gomp_unset_lock__30 omp_unset_lock_
1114fee23f9Smrg # define gomp_test_lock__30 omp_test_lock_
1124fee23f9Smrg # define gomp_init_nest_lock__30 omp_init_nest_lock_
1134fee23f9Smrg # define gomp_destroy_nest_lock__30 omp_destroy_nest_lock_
1144fee23f9Smrg # define gomp_set_nest_lock__30 omp_set_nest_lock_
1154fee23f9Smrg # define gomp_unset_nest_lock__30 omp_unset_nest_lock_
1164fee23f9Smrg # define gomp_test_nest_lock__30 omp_test_nest_lock_
1174fee23f9Smrg #endif
1184fee23f9Smrg
1194fee23f9Smrg void
1204fee23f9Smrg gomp_init_lock__30 (omp_lock_arg_t lock)
1214fee23f9Smrg {
1224fee23f9Smrg #ifndef OMP_LOCK_DIRECT
1234fee23f9Smrg omp_lock_arg (lock) = malloc (sizeof (omp_lock_t));
1244fee23f9Smrg #endif
1254fee23f9Smrg gomp_init_lock_30 (omp_lock_arg (lock));
1264fee23f9Smrg }
1274fee23f9Smrg
1284fee23f9Smrg void
gomp_init_nest_lock__30(omp_nest_lock_arg_t lock)1294fee23f9Smrg gomp_init_nest_lock__30 (omp_nest_lock_arg_t lock)
1304fee23f9Smrg {
1314fee23f9Smrg #ifndef OMP_NEST_LOCK_DIRECT
1324fee23f9Smrg omp_nest_lock_arg (lock) = malloc (sizeof (omp_nest_lock_t));
1334fee23f9Smrg #endif
1344fee23f9Smrg gomp_init_nest_lock_30 (omp_nest_lock_arg (lock));
1354fee23f9Smrg }
1364fee23f9Smrg
1374fee23f9Smrg void
gomp_destroy_lock__30(omp_lock_arg_t lock)1384fee23f9Smrg gomp_destroy_lock__30 (omp_lock_arg_t lock)
1394fee23f9Smrg {
1404fee23f9Smrg gomp_destroy_lock_30 (omp_lock_arg (lock));
1414fee23f9Smrg #ifndef OMP_LOCK_DIRECT
1424fee23f9Smrg free (omp_lock_arg (lock));
1434fee23f9Smrg omp_lock_arg (lock) = NULL;
1444fee23f9Smrg #endif
1454fee23f9Smrg }
1464fee23f9Smrg
1474fee23f9Smrg void
gomp_destroy_nest_lock__30(omp_nest_lock_arg_t lock)1484fee23f9Smrg gomp_destroy_nest_lock__30 (omp_nest_lock_arg_t lock)
1494fee23f9Smrg {
1504fee23f9Smrg gomp_destroy_nest_lock_30 (omp_nest_lock_arg (lock));
1514fee23f9Smrg #ifndef OMP_NEST_LOCK_DIRECT
1524fee23f9Smrg free (omp_nest_lock_arg (lock));
1534fee23f9Smrg omp_nest_lock_arg (lock) = NULL;
1544fee23f9Smrg #endif
1554fee23f9Smrg }
1564fee23f9Smrg
1574fee23f9Smrg void
gomp_set_lock__30(omp_lock_arg_t lock)1584fee23f9Smrg gomp_set_lock__30 (omp_lock_arg_t lock)
1594fee23f9Smrg {
1604fee23f9Smrg gomp_set_lock_30 (omp_lock_arg (lock));
1614fee23f9Smrg }
1624fee23f9Smrg
1634fee23f9Smrg void
gomp_set_nest_lock__30(omp_nest_lock_arg_t lock)1644fee23f9Smrg gomp_set_nest_lock__30 (omp_nest_lock_arg_t lock)
1654fee23f9Smrg {
1664fee23f9Smrg gomp_set_nest_lock_30 (omp_nest_lock_arg (lock));
1674fee23f9Smrg }
1684fee23f9Smrg
1694fee23f9Smrg void
gomp_unset_lock__30(omp_lock_arg_t lock)1704fee23f9Smrg gomp_unset_lock__30 (omp_lock_arg_t lock)
1714fee23f9Smrg {
1724fee23f9Smrg gomp_unset_lock_30 (omp_lock_arg (lock));
1734fee23f9Smrg }
1744fee23f9Smrg
1754fee23f9Smrg void
gomp_unset_nest_lock__30(omp_nest_lock_arg_t lock)1764fee23f9Smrg gomp_unset_nest_lock__30 (omp_nest_lock_arg_t lock)
1774fee23f9Smrg {
1784fee23f9Smrg gomp_unset_nest_lock_30 (omp_nest_lock_arg (lock));
1794fee23f9Smrg }
1804fee23f9Smrg
1814fee23f9Smrg int32_t
gomp_test_lock__30(omp_lock_arg_t lock)1824fee23f9Smrg gomp_test_lock__30 (omp_lock_arg_t lock)
1834fee23f9Smrg {
1844fee23f9Smrg return gomp_test_lock_30 (omp_lock_arg (lock));
1854fee23f9Smrg }
1864fee23f9Smrg
1874fee23f9Smrg int32_t
gomp_test_nest_lock__30(omp_nest_lock_arg_t lock)1884fee23f9Smrg gomp_test_nest_lock__30 (omp_nest_lock_arg_t lock)
1894fee23f9Smrg {
1904fee23f9Smrg return gomp_test_nest_lock_30 (omp_nest_lock_arg (lock));
1914fee23f9Smrg }
1924fee23f9Smrg
1934fee23f9Smrg #ifdef LIBGOMP_GNU_SYMBOL_VERSIONING
1944fee23f9Smrg void
gomp_init_lock__25(omp_lock_25_arg_t lock)1954fee23f9Smrg gomp_init_lock__25 (omp_lock_25_arg_t lock)
1964fee23f9Smrg {
1974fee23f9Smrg #ifndef OMP_LOCK_25_DIRECT
1984fee23f9Smrg omp_lock_25_arg (lock) = malloc (sizeof (omp_lock_25_t));
1994fee23f9Smrg #endif
2004fee23f9Smrg gomp_init_lock_25 (omp_lock_25_arg (lock));
2014fee23f9Smrg }
2024fee23f9Smrg
2034fee23f9Smrg void
gomp_init_nest_lock__25(omp_nest_lock_25_arg_t lock)2044fee23f9Smrg gomp_init_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2054fee23f9Smrg {
2064fee23f9Smrg #ifndef OMP_NEST_LOCK_25_DIRECT
2074fee23f9Smrg omp_nest_lock_25_arg (lock) = malloc (sizeof (omp_nest_lock_25_t));
2084fee23f9Smrg #endif
2094fee23f9Smrg gomp_init_nest_lock_25 (omp_nest_lock_25_arg (lock));
2104fee23f9Smrg }
2114fee23f9Smrg
2124fee23f9Smrg void
gomp_destroy_lock__25(omp_lock_25_arg_t lock)2134fee23f9Smrg gomp_destroy_lock__25 (omp_lock_25_arg_t lock)
2144fee23f9Smrg {
2154fee23f9Smrg gomp_destroy_lock_25 (omp_lock_25_arg (lock));
2164fee23f9Smrg #ifndef OMP_LOCK_25_DIRECT
2174fee23f9Smrg free (omp_lock_25_arg (lock));
2184fee23f9Smrg omp_lock_25_arg (lock) = NULL;
2194fee23f9Smrg #endif
2204fee23f9Smrg }
2214fee23f9Smrg
2224fee23f9Smrg void
gomp_destroy_nest_lock__25(omp_nest_lock_25_arg_t lock)2234fee23f9Smrg gomp_destroy_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2244fee23f9Smrg {
2254fee23f9Smrg gomp_destroy_nest_lock_25 (omp_nest_lock_25_arg (lock));
2264fee23f9Smrg #ifndef OMP_NEST_LOCK_25_DIRECT
2274fee23f9Smrg free (omp_nest_lock_25_arg (lock));
2284fee23f9Smrg omp_nest_lock_25_arg (lock) = NULL;
2294fee23f9Smrg #endif
2304fee23f9Smrg }
2314fee23f9Smrg
2324fee23f9Smrg void
gomp_set_lock__25(omp_lock_25_arg_t lock)2334fee23f9Smrg gomp_set_lock__25 (omp_lock_25_arg_t lock)
2344fee23f9Smrg {
2354fee23f9Smrg gomp_set_lock_25 (omp_lock_25_arg (lock));
2364fee23f9Smrg }
2374fee23f9Smrg
2384fee23f9Smrg void
gomp_set_nest_lock__25(omp_nest_lock_25_arg_t lock)2394fee23f9Smrg gomp_set_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2404fee23f9Smrg {
2414fee23f9Smrg gomp_set_nest_lock_25 (omp_nest_lock_25_arg (lock));
2424fee23f9Smrg }
2434fee23f9Smrg
2444fee23f9Smrg void
gomp_unset_lock__25(omp_lock_25_arg_t lock)2454fee23f9Smrg gomp_unset_lock__25 (omp_lock_25_arg_t lock)
2464fee23f9Smrg {
2474fee23f9Smrg gomp_unset_lock_25 (omp_lock_25_arg (lock));
2484fee23f9Smrg }
2494fee23f9Smrg
2504fee23f9Smrg void
gomp_unset_nest_lock__25(omp_nest_lock_25_arg_t lock)2514fee23f9Smrg gomp_unset_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2524fee23f9Smrg {
2534fee23f9Smrg gomp_unset_nest_lock_25 (omp_nest_lock_25_arg (lock));
2544fee23f9Smrg }
2554fee23f9Smrg
2564fee23f9Smrg int32_t
gomp_test_lock__25(omp_lock_25_arg_t lock)2574fee23f9Smrg gomp_test_lock__25 (omp_lock_25_arg_t lock)
2584fee23f9Smrg {
2594fee23f9Smrg return gomp_test_lock_25 (omp_lock_25_arg (lock));
2604fee23f9Smrg }
2614fee23f9Smrg
2624fee23f9Smrg int32_t
gomp_test_nest_lock__25(omp_nest_lock_25_arg_t lock)2634fee23f9Smrg gomp_test_nest_lock__25 (omp_nest_lock_25_arg_t lock)
2644fee23f9Smrg {
2654fee23f9Smrg return gomp_test_nest_lock_25 (omp_nest_lock_25_arg (lock));
2664fee23f9Smrg }
2674fee23f9Smrg
2684fee23f9Smrg omp_lock_symver (omp_init_lock_)
omp_lock_symver(omp_destroy_lock_)2694fee23f9Smrg omp_lock_symver (omp_destroy_lock_)
2704fee23f9Smrg omp_lock_symver (omp_set_lock_)
2714fee23f9Smrg omp_lock_symver (omp_unset_lock_)
2724fee23f9Smrg omp_lock_symver (omp_test_lock_)
2734fee23f9Smrg omp_lock_symver (omp_init_nest_lock_)
2744fee23f9Smrg omp_lock_symver (omp_destroy_nest_lock_)
2754fee23f9Smrg omp_lock_symver (omp_set_nest_lock_)
2764fee23f9Smrg omp_lock_symver (omp_unset_nest_lock_)
2774fee23f9Smrg omp_lock_symver (omp_test_nest_lock_)
2784fee23f9Smrg #endif
2794fee23f9Smrg
280a9d89c3bSskrll #define TO_INT(x) ((x) > INT_MIN ? (x) < INT_MAX ? (x) : INT_MAX : INT_MIN)
281a9d89c3bSskrll
2824fee23f9Smrg void
2834fee23f9Smrg omp_set_dynamic_ (const int32_t *set)
2844fee23f9Smrg {
2854fee23f9Smrg omp_set_dynamic (*set);
2864fee23f9Smrg }
2874fee23f9Smrg
2884fee23f9Smrg void
omp_set_dynamic_8_(const int64_t * set)2894fee23f9Smrg omp_set_dynamic_8_ (const int64_t *set)
2904fee23f9Smrg {
291a9d89c3bSskrll omp_set_dynamic (!!*set);
2924fee23f9Smrg }
2934fee23f9Smrg
294b1e83836Smrg #pragma GCC diagnostic push
295b1e83836Smrg #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
2964fee23f9Smrg void
omp_set_nested_(const int32_t * set)2974fee23f9Smrg omp_set_nested_ (const int32_t *set)
2984fee23f9Smrg {
2994fee23f9Smrg omp_set_nested (*set);
3004fee23f9Smrg }
3014fee23f9Smrg
3024fee23f9Smrg void
omp_set_nested_8_(const int64_t * set)3034fee23f9Smrg omp_set_nested_8_ (const int64_t *set)
3044fee23f9Smrg {
305a9d89c3bSskrll omp_set_nested (!!*set);
3064fee23f9Smrg }
307b1e83836Smrg #pragma GCC diagnostic pop
3084fee23f9Smrg
3094fee23f9Smrg void
omp_set_num_threads_(const int32_t * set)3104fee23f9Smrg omp_set_num_threads_ (const int32_t *set)
3114fee23f9Smrg {
3124fee23f9Smrg omp_set_num_threads (*set);
3134fee23f9Smrg }
3144fee23f9Smrg
3154fee23f9Smrg void
omp_set_num_threads_8_(const int64_t * set)3164fee23f9Smrg omp_set_num_threads_8_ (const int64_t *set)
3174fee23f9Smrg {
318a9d89c3bSskrll omp_set_num_threads (TO_INT (*set));
3194fee23f9Smrg }
3204fee23f9Smrg
3214fee23f9Smrg int32_t
omp_get_dynamic_(void)3224fee23f9Smrg omp_get_dynamic_ (void)
3234fee23f9Smrg {
3244fee23f9Smrg return omp_get_dynamic ();
3254fee23f9Smrg }
3264fee23f9Smrg
327b1e83836Smrg #pragma GCC diagnostic push
328b1e83836Smrg #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
3294fee23f9Smrg int32_t
omp_get_nested_(void)3304fee23f9Smrg omp_get_nested_ (void)
3314fee23f9Smrg {
3324fee23f9Smrg return omp_get_nested ();
3334fee23f9Smrg }
334b1e83836Smrg #pragma GCC diagnostic pop
3354fee23f9Smrg
3364fee23f9Smrg int32_t
omp_in_parallel_(void)3374fee23f9Smrg omp_in_parallel_ (void)
3384fee23f9Smrg {
3394fee23f9Smrg return omp_in_parallel ();
3404fee23f9Smrg }
3414fee23f9Smrg
3424fee23f9Smrg int32_t
omp_get_max_threads_(void)3434fee23f9Smrg omp_get_max_threads_ (void)
3444fee23f9Smrg {
3454fee23f9Smrg return omp_get_max_threads ();
3464fee23f9Smrg }
3474fee23f9Smrg
3484fee23f9Smrg int32_t
omp_get_num_procs_(void)3494fee23f9Smrg omp_get_num_procs_ (void)
3504fee23f9Smrg {
3514fee23f9Smrg return omp_get_num_procs ();
3524fee23f9Smrg }
3534fee23f9Smrg
3544fee23f9Smrg int32_t
omp_get_num_threads_(void)3554fee23f9Smrg omp_get_num_threads_ (void)
3564fee23f9Smrg {
3574fee23f9Smrg return omp_get_num_threads ();
3584fee23f9Smrg }
3594fee23f9Smrg
3604fee23f9Smrg int32_t
omp_get_thread_num_(void)3614fee23f9Smrg omp_get_thread_num_ (void)
3624fee23f9Smrg {
3634fee23f9Smrg return omp_get_thread_num ();
3644fee23f9Smrg }
3654fee23f9Smrg
3664fee23f9Smrg double
omp_get_wtick_(void)3674fee23f9Smrg omp_get_wtick_ (void)
3684fee23f9Smrg {
3694fee23f9Smrg return omp_get_wtick ();
3704fee23f9Smrg }
3714fee23f9Smrg
3724fee23f9Smrg double
omp_get_wtime_(void)3734fee23f9Smrg omp_get_wtime_ (void)
3744fee23f9Smrg {
3754fee23f9Smrg return omp_get_wtime ();
3764fee23f9Smrg }
3774fee23f9Smrg
3784fee23f9Smrg void
omp_set_schedule_(const int32_t * kind,const int32_t * chunk_size)379f9a78e0eSmrg omp_set_schedule_ (const int32_t *kind, const int32_t *chunk_size)
3804fee23f9Smrg {
381f9a78e0eSmrg omp_set_schedule (*kind, *chunk_size);
3824fee23f9Smrg }
3834fee23f9Smrg
3844fee23f9Smrg void
omp_set_schedule_8_(const int32_t * kind,const int64_t * chunk_size)385f9a78e0eSmrg omp_set_schedule_8_ (const int32_t *kind, const int64_t *chunk_size)
3864fee23f9Smrg {
387f9a78e0eSmrg omp_set_schedule (*kind, TO_INT (*chunk_size));
3884fee23f9Smrg }
3894fee23f9Smrg
3904fee23f9Smrg void
omp_get_schedule_(int32_t * kind,int32_t * chunk_size)391f9a78e0eSmrg omp_get_schedule_ (int32_t *kind, int32_t *chunk_size)
3924fee23f9Smrg {
3934fee23f9Smrg omp_sched_t k;
394f9a78e0eSmrg int cs;
395f9a78e0eSmrg omp_get_schedule (&k, &cs);
396181254a7Smrg /* For now mask off GFS_MONOTONIC, because OpenMP 4.5 code will not
397181254a7Smrg expect to see it. */
398181254a7Smrg *kind = k & ~GFS_MONOTONIC;
399f9a78e0eSmrg *chunk_size = cs;
4004fee23f9Smrg }
4014fee23f9Smrg
4024fee23f9Smrg void
omp_get_schedule_8_(int32_t * kind,int64_t * chunk_size)403f9a78e0eSmrg omp_get_schedule_8_ (int32_t *kind, int64_t *chunk_size)
4044fee23f9Smrg {
4054fee23f9Smrg omp_sched_t k;
406f9a78e0eSmrg int cs;
407f9a78e0eSmrg omp_get_schedule (&k, &cs);
408181254a7Smrg /* See above. */
409181254a7Smrg *kind = k & ~GFS_MONOTONIC;
410f9a78e0eSmrg *chunk_size = cs;
4114fee23f9Smrg }
4124fee23f9Smrg
4134fee23f9Smrg int32_t
omp_get_thread_limit_(void)4144fee23f9Smrg omp_get_thread_limit_ (void)
4154fee23f9Smrg {
4164fee23f9Smrg return omp_get_thread_limit ();
4174fee23f9Smrg }
4184fee23f9Smrg
4194fee23f9Smrg void
omp_set_max_active_levels_(const int32_t * levels)4204fee23f9Smrg omp_set_max_active_levels_ (const int32_t *levels)
4214fee23f9Smrg {
4224fee23f9Smrg omp_set_max_active_levels (*levels);
4234fee23f9Smrg }
4244fee23f9Smrg
4254fee23f9Smrg void
omp_set_max_active_levels_8_(const int64_t * levels)4264fee23f9Smrg omp_set_max_active_levels_8_ (const int64_t *levels)
4274fee23f9Smrg {
428a9d89c3bSskrll omp_set_max_active_levels (TO_INT (*levels));
4294fee23f9Smrg }
4304fee23f9Smrg
4314fee23f9Smrg int32_t
omp_get_max_active_levels_(void)4324fee23f9Smrg omp_get_max_active_levels_ (void)
4334fee23f9Smrg {
4344fee23f9Smrg return omp_get_max_active_levels ();
4354fee23f9Smrg }
4364fee23f9Smrg
4374fee23f9Smrg int32_t
omp_get_supported_active_levels_(void)438b1e83836Smrg omp_get_supported_active_levels_ (void)
439b1e83836Smrg {
440b1e83836Smrg return omp_get_supported_active_levels ();
441b1e83836Smrg }
442b1e83836Smrg
443b1e83836Smrg int32_t
omp_get_level_(void)4444fee23f9Smrg omp_get_level_ (void)
4454fee23f9Smrg {
4464fee23f9Smrg return omp_get_level ();
4474fee23f9Smrg }
4484fee23f9Smrg
4494fee23f9Smrg int32_t
omp_get_ancestor_thread_num_(const int32_t * level)4504fee23f9Smrg omp_get_ancestor_thread_num_ (const int32_t *level)
4514fee23f9Smrg {
4524fee23f9Smrg return omp_get_ancestor_thread_num (*level);
4534fee23f9Smrg }
4544fee23f9Smrg
4554fee23f9Smrg int32_t
omp_get_ancestor_thread_num_8_(const int64_t * level)4564fee23f9Smrg omp_get_ancestor_thread_num_8_ (const int64_t *level)
4574fee23f9Smrg {
458a9d89c3bSskrll return omp_get_ancestor_thread_num (TO_INT (*level));
4594fee23f9Smrg }
4604fee23f9Smrg
4614fee23f9Smrg int32_t
omp_get_team_size_(const int32_t * level)4624fee23f9Smrg omp_get_team_size_ (const int32_t *level)
4634fee23f9Smrg {
4644fee23f9Smrg return omp_get_team_size (*level);
4654fee23f9Smrg }
4664fee23f9Smrg
4674fee23f9Smrg int32_t
omp_get_team_size_8_(const int64_t * level)4684fee23f9Smrg omp_get_team_size_8_ (const int64_t *level)
4694fee23f9Smrg {
470a9d89c3bSskrll return omp_get_team_size (TO_INT (*level));
4714fee23f9Smrg }
4724fee23f9Smrg
4734fee23f9Smrg int32_t
omp_get_active_level_(void)4744fee23f9Smrg omp_get_active_level_ (void)
4754fee23f9Smrg {
4764fee23f9Smrg return omp_get_active_level ();
4774fee23f9Smrg }
47848fb7bfaSmrg
47948fb7bfaSmrg int32_t
omp_in_final_(void)48048fb7bfaSmrg omp_in_final_ (void)
48148fb7bfaSmrg {
48248fb7bfaSmrg return omp_in_final ();
48348fb7bfaSmrg }
4844d5abbe8Smrg
485b1e83836Smrg void
omp_set_num_teams_(const int32_t * num_teams)486b1e83836Smrg omp_set_num_teams_ (const int32_t *num_teams)
487b1e83836Smrg {
488b1e83836Smrg omp_set_num_teams (*num_teams);
489b1e83836Smrg }
490b1e83836Smrg
491b1e83836Smrg void
omp_set_num_teams_8_(const int64_t * num_teams)492b1e83836Smrg omp_set_num_teams_8_ (const int64_t *num_teams)
493b1e83836Smrg {
494b1e83836Smrg omp_set_num_teams (TO_INT (*num_teams));
495b1e83836Smrg }
496b1e83836Smrg
497b1e83836Smrg int32_t
omp_get_max_teams_(void)498b1e83836Smrg omp_get_max_teams_ (void)
499b1e83836Smrg {
500b1e83836Smrg return omp_get_max_teams ();
501b1e83836Smrg }
502b1e83836Smrg
503b1e83836Smrg void
omp_set_teams_thread_limit_(const int32_t * thread_limit)504b1e83836Smrg omp_set_teams_thread_limit_ (const int32_t *thread_limit)
505b1e83836Smrg {
506b1e83836Smrg omp_set_teams_thread_limit (*thread_limit);
507b1e83836Smrg }
508b1e83836Smrg
509b1e83836Smrg void
omp_set_teams_thread_limit_8_(const int64_t * thread_limit)510b1e83836Smrg omp_set_teams_thread_limit_8_ (const int64_t *thread_limit)
511b1e83836Smrg {
512b1e83836Smrg omp_set_teams_thread_limit (TO_INT (*thread_limit));
513b1e83836Smrg }
514b1e83836Smrg
515b1e83836Smrg int32_t
omp_get_teams_thread_limit_(void)516b1e83836Smrg omp_get_teams_thread_limit_ (void)
517b1e83836Smrg {
518b1e83836Smrg return omp_get_teams_thread_limit ();
519b1e83836Smrg }
520b1e83836Smrg
5214d5abbe8Smrg int32_t
omp_get_cancellation_(void)5224d5abbe8Smrg omp_get_cancellation_ (void)
5234d5abbe8Smrg {
5244d5abbe8Smrg return omp_get_cancellation ();
5254d5abbe8Smrg }
5264d5abbe8Smrg
5274d5abbe8Smrg int32_t
omp_get_proc_bind_(void)5284d5abbe8Smrg omp_get_proc_bind_ (void)
5294d5abbe8Smrg {
5304d5abbe8Smrg return omp_get_proc_bind ();
5314d5abbe8Smrg }
5324d5abbe8Smrg
533f9a78e0eSmrg int32_t
omp_get_num_places_(void)534f9a78e0eSmrg omp_get_num_places_ (void)
535f9a78e0eSmrg {
536f9a78e0eSmrg return omp_get_num_places ();
537f9a78e0eSmrg }
538f9a78e0eSmrg
539f9a78e0eSmrg int32_t
omp_get_place_num_procs_(const int32_t * place_num)540f9a78e0eSmrg omp_get_place_num_procs_ (const int32_t *place_num)
541f9a78e0eSmrg {
542f9a78e0eSmrg return omp_get_place_num_procs (*place_num);
543f9a78e0eSmrg }
544f9a78e0eSmrg
545f9a78e0eSmrg int32_t
omp_get_place_num_procs_8_(const int64_t * place_num)546f9a78e0eSmrg omp_get_place_num_procs_8_ (const int64_t *place_num)
547f9a78e0eSmrg {
548f9a78e0eSmrg return omp_get_place_num_procs (TO_INT (*place_num));
549f9a78e0eSmrg }
550f9a78e0eSmrg
551f9a78e0eSmrg void
omp_get_place_proc_ids_(const int32_t * place_num,int32_t * ids)552f9a78e0eSmrg omp_get_place_proc_ids_ (const int32_t *place_num, int32_t *ids)
553f9a78e0eSmrg {
554f9a78e0eSmrg omp_get_place_proc_ids (*place_num, (int *) ids);
555f9a78e0eSmrg }
556f9a78e0eSmrg
557f9a78e0eSmrg void
omp_get_place_proc_ids_8_(const int64_t * place_num,int64_t * ids)558f9a78e0eSmrg omp_get_place_proc_ids_8_ (const int64_t *place_num, int64_t *ids)
559f9a78e0eSmrg {
560f9a78e0eSmrg gomp_get_place_proc_ids_8 (TO_INT (*place_num), ids);
561f9a78e0eSmrg }
562f9a78e0eSmrg
563f9a78e0eSmrg int32_t
omp_get_place_num_(void)564f9a78e0eSmrg omp_get_place_num_ (void)
565f9a78e0eSmrg {
566f9a78e0eSmrg return omp_get_place_num ();
567f9a78e0eSmrg }
568f9a78e0eSmrg
569f9a78e0eSmrg int32_t
omp_get_partition_num_places_(void)570f9a78e0eSmrg omp_get_partition_num_places_ (void)
571f9a78e0eSmrg {
572f9a78e0eSmrg return omp_get_partition_num_places ();
573f9a78e0eSmrg }
574f9a78e0eSmrg
575f9a78e0eSmrg void
omp_get_partition_place_nums_(int32_t * place_nums)576f9a78e0eSmrg omp_get_partition_place_nums_ (int32_t *place_nums)
577f9a78e0eSmrg {
578f9a78e0eSmrg omp_get_partition_place_nums ((int *) place_nums);
579f9a78e0eSmrg }
580f9a78e0eSmrg
581f9a78e0eSmrg void
omp_get_partition_place_nums_8_(int64_t * place_nums)582f9a78e0eSmrg omp_get_partition_place_nums_8_ (int64_t *place_nums)
583f9a78e0eSmrg {
584f9a78e0eSmrg if (gomp_places_list == NULL)
585f9a78e0eSmrg return;
586f9a78e0eSmrg
587f9a78e0eSmrg struct gomp_thread *thr = gomp_thread ();
588f9a78e0eSmrg if (thr->place == 0)
589f9a78e0eSmrg gomp_init_affinity ();
590f9a78e0eSmrg
591f9a78e0eSmrg unsigned int i;
592f9a78e0eSmrg for (i = 0; i < thr->ts.place_partition_len; i++)
593f9a78e0eSmrg *place_nums++ = (int64_t) thr->ts.place_partition_off + i;
594f9a78e0eSmrg }
595f9a78e0eSmrg
5964d5abbe8Smrg void
omp_set_default_device_(const int32_t * device_num)5974d5abbe8Smrg omp_set_default_device_ (const int32_t *device_num)
5984d5abbe8Smrg {
5994d5abbe8Smrg return omp_set_default_device (*device_num);
6004d5abbe8Smrg }
6014d5abbe8Smrg
6024d5abbe8Smrg void
omp_set_default_device_8_(const int64_t * device_num)6034d5abbe8Smrg omp_set_default_device_8_ (const int64_t *device_num)
6044d5abbe8Smrg {
6054d5abbe8Smrg return omp_set_default_device (TO_INT (*device_num));
6064d5abbe8Smrg }
6074d5abbe8Smrg
6084d5abbe8Smrg int32_t
omp_get_default_device_(void)6094d5abbe8Smrg omp_get_default_device_ (void)
6104d5abbe8Smrg {
6114d5abbe8Smrg return omp_get_default_device ();
6124d5abbe8Smrg }
6134d5abbe8Smrg
6144d5abbe8Smrg int32_t
omp_get_num_devices_(void)6154d5abbe8Smrg omp_get_num_devices_ (void)
6164d5abbe8Smrg {
6174d5abbe8Smrg return omp_get_num_devices ();
6184d5abbe8Smrg }
6194d5abbe8Smrg
6204d5abbe8Smrg int32_t
omp_get_num_teams_(void)6214d5abbe8Smrg omp_get_num_teams_ (void)
6224d5abbe8Smrg {
6234d5abbe8Smrg return omp_get_num_teams ();
6244d5abbe8Smrg }
6254d5abbe8Smrg
6264d5abbe8Smrg int32_t
omp_get_team_num_(void)6274d5abbe8Smrg omp_get_team_num_ (void)
6284d5abbe8Smrg {
6294d5abbe8Smrg return omp_get_team_num ();
6304d5abbe8Smrg }
6314d5abbe8Smrg
6324d5abbe8Smrg int32_t
omp_is_initial_device_(void)6334d5abbe8Smrg omp_is_initial_device_ (void)
6344d5abbe8Smrg {
6354d5abbe8Smrg return omp_is_initial_device ();
6364d5abbe8Smrg }
637f9a78e0eSmrg
638f9a78e0eSmrg int32_t
omp_get_initial_device_(void)639f9a78e0eSmrg omp_get_initial_device_ (void)
640f9a78e0eSmrg {
641f9a78e0eSmrg return omp_get_initial_device ();
642f9a78e0eSmrg }
643f9a78e0eSmrg
644f9a78e0eSmrg int32_t
omp_get_device_num_(void)645b1e83836Smrg omp_get_device_num_ (void)
646b1e83836Smrg {
647b1e83836Smrg return omp_get_device_num ();
648b1e83836Smrg }
649b1e83836Smrg
650b1e83836Smrg int32_t
omp_get_max_task_priority_(void)651f9a78e0eSmrg omp_get_max_task_priority_ (void)
652f9a78e0eSmrg {
653f9a78e0eSmrg return omp_get_max_task_priority ();
654f9a78e0eSmrg }
655181254a7Smrg
656181254a7Smrg void
omp_fulfill_event_(intptr_t event)657b1e83836Smrg omp_fulfill_event_ (intptr_t event)
658b1e83836Smrg {
659b1e83836Smrg omp_fulfill_event ((omp_event_handle_t) event);
660b1e83836Smrg }
661b1e83836Smrg
662b1e83836Smrg void
omp_set_affinity_format_(const char * format,size_t format_len)663181254a7Smrg omp_set_affinity_format_ (const char *format, size_t format_len)
664181254a7Smrg {
665181254a7Smrg gomp_set_affinity_format (format, format_len);
666181254a7Smrg }
667181254a7Smrg
668181254a7Smrg int32_t
omp_get_affinity_format_(char * buffer,size_t buffer_len)669181254a7Smrg omp_get_affinity_format_ (char *buffer, size_t buffer_len)
670181254a7Smrg {
671181254a7Smrg size_t len = strlen (gomp_affinity_format_var);
672181254a7Smrg if (buffer_len)
673181254a7Smrg {
674181254a7Smrg if (len < buffer_len)
675181254a7Smrg {
676181254a7Smrg memcpy (buffer, gomp_affinity_format_var, len);
677181254a7Smrg memset (buffer + len, ' ', buffer_len - len);
678181254a7Smrg }
679181254a7Smrg else
680181254a7Smrg memcpy (buffer, gomp_affinity_format_var, buffer_len);
681181254a7Smrg }
682181254a7Smrg return len;
683181254a7Smrg }
684181254a7Smrg
685181254a7Smrg void
omp_display_affinity_(const char * format,size_t format_len)686181254a7Smrg omp_display_affinity_ (const char *format, size_t format_len)
687181254a7Smrg {
688181254a7Smrg char *fmt = NULL, fmt_buf[256];
689181254a7Smrg char buf[512];
690181254a7Smrg if (format_len)
691181254a7Smrg {
692181254a7Smrg fmt = format_len < 256 ? fmt_buf : gomp_malloc (format_len + 1);
693181254a7Smrg memcpy (fmt, format, format_len);
694181254a7Smrg fmt[format_len] = '\0';
695181254a7Smrg }
696181254a7Smrg struct gomp_thread *thr = gomp_thread ();
697181254a7Smrg size_t ret
698181254a7Smrg = gomp_display_affinity (buf, sizeof buf,
699181254a7Smrg format_len ? fmt : gomp_affinity_format_var,
700181254a7Smrg gomp_thread_self (), &thr->ts, thr->place);
701181254a7Smrg if (ret < sizeof buf)
702181254a7Smrg {
703181254a7Smrg buf[ret] = '\n';
704181254a7Smrg gomp_print_string (buf, ret + 1);
705181254a7Smrg }
706181254a7Smrg else
707181254a7Smrg {
708181254a7Smrg char *b = gomp_malloc (ret + 1);
709181254a7Smrg gomp_display_affinity (buf, sizeof buf,
710181254a7Smrg format_len ? fmt : gomp_affinity_format_var,
711181254a7Smrg gomp_thread_self (), &thr->ts, thr->place);
712181254a7Smrg b[ret] = '\n';
713181254a7Smrg gomp_print_string (b, ret + 1);
714181254a7Smrg free (b);
715181254a7Smrg }
716181254a7Smrg if (fmt && fmt != fmt_buf)
717181254a7Smrg free (fmt);
718181254a7Smrg }
719181254a7Smrg
720181254a7Smrg int32_t
omp_capture_affinity_(char * buffer,const char * format,size_t buffer_len,size_t format_len)721181254a7Smrg omp_capture_affinity_ (char *buffer, const char *format,
722181254a7Smrg size_t buffer_len, size_t format_len)
723181254a7Smrg {
724181254a7Smrg char *fmt = NULL, fmt_buf[256];
725181254a7Smrg if (format_len)
726181254a7Smrg {
727181254a7Smrg fmt = format_len < 256 ? fmt_buf : gomp_malloc (format_len + 1);
728181254a7Smrg memcpy (fmt, format, format_len);
729181254a7Smrg fmt[format_len] = '\0';
730181254a7Smrg }
731181254a7Smrg struct gomp_thread *thr = gomp_thread ();
732181254a7Smrg size_t ret
733181254a7Smrg = gomp_display_affinity (buffer, buffer_len,
734181254a7Smrg format_len ? fmt : gomp_affinity_format_var,
735181254a7Smrg gomp_thread_self (), &thr->ts, thr->place);
736181254a7Smrg if (fmt && fmt != fmt_buf)
737181254a7Smrg free (fmt);
738181254a7Smrg if (ret < buffer_len)
739181254a7Smrg memset (buffer + ret, ' ', buffer_len - ret);
740181254a7Smrg return ret;
741181254a7Smrg }
742181254a7Smrg
743181254a7Smrg int32_t
omp_pause_resource_(const int32_t * kind,const int32_t * device_num)744181254a7Smrg omp_pause_resource_ (const int32_t *kind, const int32_t *device_num)
745181254a7Smrg {
746181254a7Smrg return omp_pause_resource (*kind, *device_num);
747181254a7Smrg }
748181254a7Smrg
749181254a7Smrg int32_t
omp_pause_resource_all_(const int32_t * kind)750181254a7Smrg omp_pause_resource_all_ (const int32_t *kind)
751181254a7Smrg {
752181254a7Smrg return omp_pause_resource_all (*kind);
753181254a7Smrg }
754b1e83836Smrg
755b1e83836Smrg intptr_t
omp_init_allocator_(const intptr_t * memspace,const int32_t * ntraits,const omp_alloctrait_t * traits)756b1e83836Smrg omp_init_allocator_ (const intptr_t *memspace, const int32_t *ntraits,
757b1e83836Smrg const omp_alloctrait_t *traits)
758b1e83836Smrg {
759b1e83836Smrg return (intptr_t) omp_init_allocator ((omp_memspace_handle_t) *memspace,
760b1e83836Smrg (int) *ntraits, traits);
761b1e83836Smrg }
762b1e83836Smrg
763b1e83836Smrg intptr_t
omp_init_allocator_8_(const intptr_t * memspace,const int64_t * ntraits,const omp_alloctrait_t * traits)764b1e83836Smrg omp_init_allocator_8_ (const intptr_t *memspace, const int64_t *ntraits,
765b1e83836Smrg const omp_alloctrait_t *traits)
766b1e83836Smrg {
767b1e83836Smrg return (intptr_t) omp_init_allocator ((omp_memspace_handle_t) *memspace,
768b1e83836Smrg (int) *ntraits, traits);
769b1e83836Smrg }
770b1e83836Smrg
771b1e83836Smrg void
omp_destroy_allocator_(const intptr_t * allocator)772b1e83836Smrg omp_destroy_allocator_ (const intptr_t *allocator)
773b1e83836Smrg {
774b1e83836Smrg omp_destroy_allocator ((omp_allocator_handle_t) *allocator);
775b1e83836Smrg }
776b1e83836Smrg
777b1e83836Smrg void
omp_set_default_allocator_(const intptr_t * allocator)778b1e83836Smrg omp_set_default_allocator_ (const intptr_t *allocator)
779b1e83836Smrg {
780b1e83836Smrg omp_set_default_allocator ((omp_allocator_handle_t) *allocator);
781b1e83836Smrg }
782b1e83836Smrg
783b1e83836Smrg intptr_t
omp_get_default_allocator_(void)784*4309203dSmrg omp_get_default_allocator_ (void)
785b1e83836Smrg {
786b1e83836Smrg return (intptr_t) omp_get_default_allocator ();
787b1e83836Smrg }
788b1e83836Smrg
789b1e83836Smrg #ifndef LIBGOMP_OFFLOADED_ONLY
790b1e83836Smrg
791b1e83836Smrg void
omp_display_env_(const int32_t * verbose)792b1e83836Smrg omp_display_env_ (const int32_t *verbose)
793b1e83836Smrg {
794b1e83836Smrg omp_display_env (*verbose);
795b1e83836Smrg }
796b1e83836Smrg
797b1e83836Smrg void
omp_display_env_8_(const int64_t * verbose)798b1e83836Smrg omp_display_env_8_ (const int64_t *verbose)
799b1e83836Smrg {
800b1e83836Smrg omp_display_env (!!*verbose);
801b1e83836Smrg }
802b1e83836Smrg
803b1e83836Smrg #endif /* LIBGOMP_OFFLOADED_ONLY */
804