]>
Commit | Line | Data |
---|---|---|
fbd26352 | 1 | /* Copyright (C) 2005-2019 Free Software Foundation, Inc. |
1e8e9920 | 2 | Contributed by Richard Henderson <rth@redhat.com>. |
3 | ||
c35c9a62 | 4 | This file is part of the GNU Offloading and Multi Processing Library |
5 | (libgomp). | |
1e8e9920 | 6 | |
7 | Libgomp is free software; you can redistribute it and/or modify it | |
6bc9506f | 8 | under the terms of the GNU General Public License as published by |
9 | the Free Software Foundation; either version 3, or (at your option) | |
10 | any later version. | |
1e8e9920 | 11 | |
12 | Libgomp is distributed in the hope that it will be useful, but WITHOUT ANY | |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | |
6bc9506f | 14 | FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
1e8e9920 | 15 | more details. |
16 | ||
6bc9506f | 17 | Under Section 7 of GPL version 3, you are granted additional |
18 | permissions described in the GCC Runtime Library Exception, version | |
19 | 3.1, as published by the Free Software Foundation. | |
20 | ||
21 | You should have received a copy of the GNU General Public License and | |
22 | a copy of the GCC Runtime Library Exception along with this program; | |
23 | see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
24 | <http://www.gnu.org/licenses/>. */ | |
1e8e9920 | 25 | |
6bdfe4ab | 26 | #ifndef _OMP_H |
27 | #define _OMP_H 1 | |
1e8e9920 | 28 | |
29 | #ifndef _LIBGOMP_OMP_LOCK_DEFINED | |
30 | #define _LIBGOMP_OMP_LOCK_DEFINED 1 | |
31 | /* These two structures get edited by the libgomp build process to | |
32 | reflect the shape of the two types. Their internals are private | |
33 | to the library. */ | |
34 | ||
35 | typedef struct | |
36 | { | |
107c3bbf | 37 | unsigned char _x[@OMP_LOCK_SIZE@] |
38 | __attribute__((__aligned__(@OMP_LOCK_ALIGN@))); | |
1e8e9920 | 39 | } omp_lock_t; |
40 | ||
41 | typedef struct | |
42 | { | |
107c3bbf | 43 | unsigned char _x[@OMP_NEST_LOCK_SIZE@] |
44 | __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); | |
1e8e9920 | 45 | } omp_nest_lock_t; |
46 | #endif | |
47 | ||
fd6481cf | 48 | typedef enum omp_sched_t |
49 | { | |
50 | omp_sched_static = 1, | |
51 | omp_sched_dynamic = 2, | |
52 | omp_sched_guided = 3, | |
7e5a76c8 | 53 | omp_sched_auto = 4, |
54 | omp_sched_monotonic = 0x80000000U | |
fd6481cf | 55 | } omp_sched_t; |
56 | ||
bc7bff74 | 57 | typedef enum omp_proc_bind_t |
58 | { | |
59 | omp_proc_bind_false = 0, | |
60 | omp_proc_bind_true = 1, | |
61 | omp_proc_bind_master = 2, | |
62 | omp_proc_bind_close = 3, | |
63 | omp_proc_bind_spread = 4 | |
64 | } omp_proc_bind_t; | |
65 | ||
7e5a76c8 | 66 | typedef enum omp_sync_hint_t |
43895be5 | 67 | { |
7e5a76c8 | 68 | omp_sync_hint_none = 0, |
69 | omp_lock_hint_none = omp_sync_hint_none, | |
70 | omp_sync_hint_uncontended = 1, | |
71 | omp_lock_hint_uncontended = omp_sync_hint_uncontended, | |
72 | omp_sync_hint_contended = 2, | |
73 | omp_lock_hint_contended = omp_sync_hint_contended, | |
74 | omp_sync_hint_nonspeculative = 4, | |
75 | omp_lock_hint_nonspeculative = omp_sync_hint_nonspeculative, | |
76 | omp_sync_hint_speculative = 8, | |
77 | omp_lock_hint_speculative = omp_sync_hint_speculative | |
78 | } omp_sync_hint_t; | |
79 | ||
80 | typedef omp_sync_hint_t omp_lock_hint_t; | |
81 | ||
82 | typedef struct __attribute__((__aligned__ (sizeof (void *)))) omp_depend_t | |
83 | { | |
84 | char __omp_depend_t__[2 * sizeof (void *)]; | |
85 | } omp_depend_t; | |
86 | ||
87 | typedef enum omp_pause_resource_t | |
88 | { | |
89 | omp_pause_soft = 1, | |
90 | omp_pause_hard = 2 | |
91 | } omp_pause_resource_t; | |
43895be5 | 92 | |
1e8e9920 | 93 | #ifdef __cplusplus |
94 | extern "C" { | |
658b4427 | 95 | # define __GOMP_NOTHROW throw () |
96 | #else | |
97 | # define __GOMP_NOTHROW __attribute__((__nothrow__)) | |
1e8e9920 | 98 | #endif |
99 | ||
658b4427 | 100 | extern void omp_set_num_threads (int) __GOMP_NOTHROW; |
101 | extern int omp_get_num_threads (void) __GOMP_NOTHROW; | |
102 | extern int omp_get_max_threads (void) __GOMP_NOTHROW; | |
103 | extern int omp_get_thread_num (void) __GOMP_NOTHROW; | |
104 | extern int omp_get_num_procs (void) __GOMP_NOTHROW; | |
1e8e9920 | 105 | |
658b4427 | 106 | extern int omp_in_parallel (void) __GOMP_NOTHROW; |
1e8e9920 | 107 | |
658b4427 | 108 | extern void omp_set_dynamic (int) __GOMP_NOTHROW; |
109 | extern int omp_get_dynamic (void) __GOMP_NOTHROW; | |
1e8e9920 | 110 | |
658b4427 | 111 | extern void omp_set_nested (int) __GOMP_NOTHROW; |
112 | extern int omp_get_nested (void) __GOMP_NOTHROW; | |
1e8e9920 | 113 | |
658b4427 | 114 | extern void omp_init_lock (omp_lock_t *) __GOMP_NOTHROW; |
7e5a76c8 | 115 | extern void omp_init_lock_with_hint (omp_lock_t *, omp_sync_hint_t) |
43895be5 | 116 | __GOMP_NOTHROW; |
658b4427 | 117 | extern void omp_destroy_lock (omp_lock_t *) __GOMP_NOTHROW; |
118 | extern void omp_set_lock (omp_lock_t *) __GOMP_NOTHROW; | |
119 | extern void omp_unset_lock (omp_lock_t *) __GOMP_NOTHROW; | |
120 | extern int omp_test_lock (omp_lock_t *) __GOMP_NOTHROW; | |
1e8e9920 | 121 | |
658b4427 | 122 | extern void omp_init_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; |
7e5a76c8 | 123 | extern void omp_init_nest_lock_with_hint (omp_nest_lock_t *, omp_sync_hint_t) |
43895be5 | 124 | __GOMP_NOTHROW; |
658b4427 | 125 | extern void omp_destroy_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; |
126 | extern void omp_set_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; | |
127 | extern void omp_unset_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; | |
128 | extern int omp_test_nest_lock (omp_nest_lock_t *) __GOMP_NOTHROW; | |
1e8e9920 | 129 | |
658b4427 | 130 | extern double omp_get_wtime (void) __GOMP_NOTHROW; |
131 | extern double omp_get_wtick (void) __GOMP_NOTHROW; | |
1e8e9920 | 132 | |
bc7bff74 | 133 | extern void omp_set_schedule (omp_sched_t, int) __GOMP_NOTHROW; |
134 | extern void omp_get_schedule (omp_sched_t *, int *) __GOMP_NOTHROW; | |
135 | extern int omp_get_thread_limit (void) __GOMP_NOTHROW; | |
136 | extern void omp_set_max_active_levels (int) __GOMP_NOTHROW; | |
137 | extern int omp_get_max_active_levels (void) __GOMP_NOTHROW; | |
138 | extern int omp_get_level (void) __GOMP_NOTHROW; | |
139 | extern int omp_get_ancestor_thread_num (int) __GOMP_NOTHROW; | |
140 | extern int omp_get_team_size (int) __GOMP_NOTHROW; | |
141 | extern int omp_get_active_level (void) __GOMP_NOTHROW; | |
142 | ||
143 | extern int omp_in_final (void) __GOMP_NOTHROW; | |
144 | ||
145 | extern int omp_get_cancellation (void) __GOMP_NOTHROW; | |
146 | extern omp_proc_bind_t omp_get_proc_bind (void) __GOMP_NOTHROW; | |
43895be5 | 147 | extern int omp_get_num_places (void) __GOMP_NOTHROW; |
148 | extern int omp_get_place_num_procs (int) __GOMP_NOTHROW; | |
149 | extern void omp_get_place_proc_ids (int, int *) __GOMP_NOTHROW; | |
150 | extern int omp_get_place_num (void) __GOMP_NOTHROW; | |
151 | extern int omp_get_partition_num_places (void) __GOMP_NOTHROW; | |
152 | extern void omp_get_partition_place_nums (int *) __GOMP_NOTHROW; | |
bc7bff74 | 153 | |
154 | extern void omp_set_default_device (int) __GOMP_NOTHROW; | |
155 | extern int omp_get_default_device (void) __GOMP_NOTHROW; | |
156 | extern int omp_get_num_devices (void) __GOMP_NOTHROW; | |
157 | extern int omp_get_num_teams (void) __GOMP_NOTHROW; | |
158 | extern int omp_get_team_num (void) __GOMP_NOTHROW; | |
159 | ||
160 | extern int omp_is_initial_device (void) __GOMP_NOTHROW; | |
43895be5 | 161 | extern int omp_get_initial_device (void) __GOMP_NOTHROW; |
162 | extern int omp_get_max_task_priority (void) __GOMP_NOTHROW; | |
163 | ||
164 | extern void *omp_target_alloc (__SIZE_TYPE__, int) __GOMP_NOTHROW; | |
165 | extern void omp_target_free (void *, int) __GOMP_NOTHROW; | |
7e5a76c8 | 166 | extern int omp_target_is_present (const void *, int) __GOMP_NOTHROW; |
167 | extern int omp_target_memcpy (void *, const void *, __SIZE_TYPE__, | |
168 | __SIZE_TYPE__, __SIZE_TYPE__, int, int) | |
169 | __GOMP_NOTHROW; | |
170 | extern int omp_target_memcpy_rect (void *, const void *, __SIZE_TYPE__, int, | |
43895be5 | 171 | const __SIZE_TYPE__ *, |
172 | const __SIZE_TYPE__ *, | |
173 | const __SIZE_TYPE__ *, | |
174 | const __SIZE_TYPE__ *, | |
175 | const __SIZE_TYPE__ *, int, int) | |
176 | __GOMP_NOTHROW; | |
7e5a76c8 | 177 | extern int omp_target_associate_ptr (const void *, const void *, __SIZE_TYPE__, |
43895be5 | 178 | __SIZE_TYPE__, int) __GOMP_NOTHROW; |
7e5a76c8 | 179 | extern int omp_target_disassociate_ptr (const void *, int) __GOMP_NOTHROW; |
180 | ||
181 | extern void omp_set_affinity_format (const char *) __GOMP_NOTHROW; | |
182 | extern __SIZE_TYPE__ omp_get_affinity_format (char *, __SIZE_TYPE__) | |
183 | __GOMP_NOTHROW; | |
184 | extern void omp_display_affinity (const char *) __GOMP_NOTHROW; | |
185 | extern __SIZE_TYPE__ omp_capture_affinity (char *, __SIZE_TYPE__, const char *) | |
186 | __GOMP_NOTHROW; | |
187 | ||
188 | extern int omp_pause_resource (omp_pause_resource_t, int) __GOMP_NOTHROW; | |
189 | extern int omp_pause_resource_all (omp_pause_resource_t) __GOMP_NOTHROW; | |
2169f33b | 190 | |
1e8e9920 | 191 | #ifdef __cplusplus |
192 | } | |
193 | #endif | |
194 | ||
6bdfe4ab | 195 | #endif /* _OMP_H */ |