17 #error The support file kmp_ftn_entry.h should not be compiled by itself. 38 #ifdef KMP_GOMP_COMPAT 39 #if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_UPPER) 40 #define PASS_ARGS_BY_VALUE 1 44 #if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_APPEND) 45 #define PASS_ARGS_BY_VALUE 1 50 #ifdef PASS_ARGS_BY_VALUE 56 void FTN_STDCALL FTN_SET_STACKSIZE(
int KMP_DEREF arg) {
58 __kmps_set_stacksize(KMP_DEREF arg);
61 __kmp_aux_set_stacksize((
size_t)KMP_DEREF arg);
65 void FTN_STDCALL FTN_SET_STACKSIZE_S(
size_t KMP_DEREF arg) {
67 __kmps_set_stacksize(KMP_DEREF arg);
70 __kmp_aux_set_stacksize(KMP_DEREF arg);
74 int FTN_STDCALL FTN_GET_STACKSIZE(
void) {
76 return __kmps_get_stacksize();
78 if (!__kmp_init_serial) {
79 __kmp_serial_initialize();
81 return (
int)__kmp_stksize;
85 size_t FTN_STDCALL FTN_GET_STACKSIZE_S(
void) {
87 return __kmps_get_stacksize();
89 if (!__kmp_init_serial) {
90 __kmp_serial_initialize();
96 void FTN_STDCALL FTN_SET_BLOCKTIME(
int KMP_DEREF arg) {
98 __kmps_set_blocktime(KMP_DEREF arg);
103 gtid = __kmp_entry_gtid();
104 tid = __kmp_tid_from_gtid(gtid);
105 thread = __kmp_thread_from_gtid(gtid);
107 __kmp_aux_set_blocktime(KMP_DEREF arg, thread, tid);
111 int FTN_STDCALL FTN_GET_BLOCKTIME(
void) {
113 return __kmps_get_blocktime();
119 gtid = __kmp_entry_gtid();
120 tid = __kmp_tid_from_gtid(gtid);
121 thread = __kmp_thread_from_gtid(gtid);
122 team = __kmp_threads[gtid]->th.th_team;
125 if (__kmp_dflt_blocktime == KMP_MAX_BLOCKTIME) {
126 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,
127 team->t.t_id, tid, KMP_MAX_BLOCKTIME));
128 return KMP_MAX_BLOCKTIME;
130 #ifdef KMP_ADJUST_BLOCKTIME 131 else if (__kmp_zero_bt && !get__bt_set(team, tid)) {
132 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,
133 team->t.t_id, tid, 0));
138 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n", gtid,
139 team->t.t_id, tid, get__blocktime(team, tid)));
140 return get__blocktime(team, tid);
145 void FTN_STDCALL FTN_SET_LIBRARY_SERIAL(
void) {
147 __kmps_set_library(library_serial);
150 __kmp_user_set_library(library_serial);
154 void FTN_STDCALL FTN_SET_LIBRARY_TURNAROUND(
void) {
156 __kmps_set_library(library_turnaround);
159 __kmp_user_set_library(library_turnaround);
163 void FTN_STDCALL FTN_SET_LIBRARY_THROUGHPUT(
void) {
165 __kmps_set_library(library_throughput);
168 __kmp_user_set_library(library_throughput);
172 void FTN_STDCALL FTN_SET_LIBRARY(
int KMP_DEREF arg) {
174 __kmps_set_library(KMP_DEREF arg);
176 enum library_type lib;
177 lib = (
enum library_type)KMP_DEREF arg;
179 __kmp_user_set_library(lib);
183 int FTN_STDCALL FTN_GET_LIBRARY(
void) {
185 return __kmps_get_library();
187 if (!__kmp_init_serial) {
188 __kmp_serial_initialize();
190 return ((
int)__kmp_library);
194 void FTN_STDCALL FTN_SET_DISP_NUM_BUFFERS(
int KMP_DEREF arg) {
200 if (__kmp_init_serial == 0 && (KMP_DEREF arg) > 0)
201 __kmp_dispatch_num_buffers = KMP_DEREF arg;
205 int FTN_STDCALL FTN_SET_AFFINITY(
void **mask) {
206 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 209 if (!TCR_4(__kmp_init_middle)) {
210 __kmp_middle_initialize();
212 return __kmp_aux_set_affinity(mask);
216 int FTN_STDCALL FTN_GET_AFFINITY(
void **mask) {
217 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 220 if (!TCR_4(__kmp_init_middle)) {
221 __kmp_middle_initialize();
223 return __kmp_aux_get_affinity(mask);
227 int FTN_STDCALL FTN_GET_AFFINITY_MAX_PROC(
void) {
228 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 232 if (!TCR_4(__kmp_init_middle)) {
233 __kmp_middle_initialize();
235 return __kmp_aux_get_affinity_max_proc();
239 void FTN_STDCALL FTN_CREATE_AFFINITY_MASK(
void **mask) {
240 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 244 kmp_affin_mask_t *mask_internals;
245 if (!TCR_4(__kmp_init_middle)) {
246 __kmp_middle_initialize();
248 mask_internals = __kmp_affinity_dispatch->allocate_mask();
249 KMP_CPU_ZERO(mask_internals);
250 *mask = mask_internals;
254 void FTN_STDCALL FTN_DESTROY_AFFINITY_MASK(
void **mask) {
255 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 259 kmp_affin_mask_t *mask_internals;
260 if (!TCR_4(__kmp_init_middle)) {
261 __kmp_middle_initialize();
263 if (__kmp_env_consistency_check) {
265 KMP_FATAL(AffinityInvalidMask,
"kmp_destroy_affinity_mask");
268 mask_internals = (kmp_affin_mask_t *)(*mask);
269 __kmp_affinity_dispatch->deallocate_mask(mask_internals);
274 int FTN_STDCALL FTN_SET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
275 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 278 if (!TCR_4(__kmp_init_middle)) {
279 __kmp_middle_initialize();
281 return __kmp_aux_set_affinity_mask_proc(KMP_DEREF proc, mask);
285 int FTN_STDCALL FTN_UNSET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
286 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 289 if (!TCR_4(__kmp_init_middle)) {
290 __kmp_middle_initialize();
292 return __kmp_aux_unset_affinity_mask_proc(KMP_DEREF proc, mask);
296 int FTN_STDCALL FTN_GET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask) {
297 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 300 if (!TCR_4(__kmp_init_middle)) {
301 __kmp_middle_initialize();
303 return __kmp_aux_get_affinity_mask_proc(KMP_DEREF proc, mask);
310 void FTN_STDCALL xexpand(FTN_SET_NUM_THREADS)(
int KMP_DEREF arg) {
314 __kmp_set_num_threads(KMP_DEREF arg, __kmp_entry_gtid());
319 int FTN_STDCALL xexpand(FTN_GET_NUM_THREADS)(void) {
328 int FTN_STDCALL xexpand(FTN_GET_MAX_THREADS)(void) {
334 if (!TCR_4(__kmp_init_middle)) {
335 __kmp_middle_initialize();
337 gtid = __kmp_entry_gtid();
338 thread = __kmp_threads[gtid];
341 return thread->th.th_current_task->td_icvs.nproc;
345 int FTN_STDCALL xexpand(FTN_GET_THREAD_NUM)(void) {
351 #if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD 352 gtid = __kmp_entry_gtid();
354 if (!__kmp_init_parallel ||
355 (gtid = (
int)((kmp_intptr_t)TlsGetValue(__kmp_gtid_threadprivate_key))) ==
363 #ifdef KMP_TDATA_GTID 364 if (__kmp_gtid_mode >= 3) {
365 if ((gtid = __kmp_gtid) == KMP_GTID_DNE) {
370 if (!__kmp_init_parallel ||
371 (gtid = (kmp_intptr_t)(
372 pthread_getspecific(__kmp_gtid_threadprivate_key))) == 0) {
376 #ifdef KMP_TDATA_GTID 380 #error Unknown or unsupported OS 383 return __kmp_tid_from_gtid(gtid);
387 int FTN_STDCALL FTN_GET_NUM_KNOWN_THREADS(
void) {
391 if (!__kmp_init_serial) {
392 __kmp_serial_initialize();
396 return TCR_4(__kmp_nth);
400 int FTN_STDCALL xexpand(FTN_GET_NUM_PROCS)(void) {
404 if (!TCR_4(__kmp_init_middle)) {
405 __kmp_middle_initialize();
407 return __kmp_avail_proc;
411 void FTN_STDCALL xexpand(FTN_SET_NESTED)(
int KMP_DEREF flag) {
413 __kmps_set_nested(KMP_DEREF flag);
417 thread = __kmp_entry_thread();
418 __kmp_save_internal_controls(thread);
419 set__nested(thread, ((KMP_DEREF flag) ? TRUE : FALSE));
423 int FTN_STDCALL xexpand(FTN_GET_NESTED)(void) {
425 return __kmps_get_nested();
428 thread = __kmp_entry_thread();
429 return get__nested(thread);
433 void FTN_STDCALL xexpand(FTN_SET_DYNAMIC)(
int KMP_DEREF flag) {
435 __kmps_set_dynamic(KMP_DEREF flag ? TRUE : FALSE);
439 thread = __kmp_entry_thread();
441 __kmp_save_internal_controls(thread);
442 set__dynamic(thread, KMP_DEREF flag ? TRUE : FALSE);
446 int FTN_STDCALL xexpand(FTN_GET_DYNAMIC)(void) {
448 return __kmps_get_dynamic();
451 thread = __kmp_entry_thread();
452 return get__dynamic(thread);
456 int FTN_STDCALL xexpand(FTN_IN_PARALLEL)(void) {
460 kmp_info_t *th = __kmp_entry_thread();
462 if (th->th.th_teams_microtask) {
467 return (th->th.th_team->t.t_active_level ? 1 : 0);
470 return (th->th.th_root->r.r_in_parallel ? FTN_TRUE : FTN_FALSE);
474 void FTN_STDCALL xexpand(FTN_SET_SCHEDULE)(kmp_sched_t KMP_DEREF kind,
475 int KMP_DEREF modifier) {
477 __kmps_set_schedule(KMP_DEREF kind, KMP_DEREF modifier);
480 __kmp_set_schedule(__kmp_entry_gtid(), KMP_DEREF kind, KMP_DEREF modifier);
484 void FTN_STDCALL xexpand(FTN_GET_SCHEDULE)(kmp_sched_t *kind,
int *modifier) {
486 __kmps_get_schedule(kind, modifier);
489 __kmp_get_schedule(__kmp_entry_gtid(), kind, modifier);
493 void FTN_STDCALL xexpand(FTN_SET_MAX_ACTIVE_LEVELS)(
int KMP_DEREF arg) {
498 __kmp_set_max_active_levels(__kmp_entry_gtid(), KMP_DEREF arg);
502 int FTN_STDCALL xexpand(FTN_GET_MAX_ACTIVE_LEVELS)(void) {
507 return __kmp_get_max_active_levels(__kmp_entry_gtid());
511 int FTN_STDCALL xexpand(FTN_GET_ACTIVE_LEVEL)(void) {
516 return __kmp_entry_thread()->th.th_team->t.t_active_level;
520 int FTN_STDCALL xexpand(FTN_GET_LEVEL)(void) {
525 return __kmp_entry_thread()->th.th_team->t.t_level;
529 int FTN_STDCALL xexpand(FTN_GET_ANCESTOR_THREAD_NUM)(
int KMP_DEREF level) {
531 return (KMP_DEREF level) ? (-1) : (0);
533 return __kmp_get_ancestor_thread_num(__kmp_entry_gtid(), KMP_DEREF level);
537 int FTN_STDCALL xexpand(FTN_GET_TEAM_SIZE)(
int KMP_DEREF level) {
539 return (KMP_DEREF level) ? (-1) : (1);
541 return __kmp_get_team_size(__kmp_entry_gtid(), KMP_DEREF level);
545 int FTN_STDCALL xexpand(FTN_GET_THREAD_LIMIT)(void) {
549 if (!__kmp_init_serial) {
550 __kmp_serial_initialize();
553 return __kmp_max_nth;
557 int FTN_STDCALL xexpand(FTN_IN_FINAL)(void) {
561 if (!TCR_4(__kmp_init_parallel)) {
564 return __kmp_entry_thread()->th.th_current_task->td_flags.final;
571 kmp_proc_bind_t FTN_STDCALL xexpand(FTN_GET_PROC_BIND)(void) {
573 return __kmps_get_proc_bind();
575 return get__proc_bind(__kmp_entry_thread());
580 int FTN_STDCALL FTN_GET_NUM_PLACES(
void) {
581 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 584 if (!TCR_4(__kmp_init_middle)) {
585 __kmp_middle_initialize();
587 if (!KMP_AFFINITY_CAPABLE())
589 return __kmp_affinity_num_masks;
593 int FTN_STDCALL FTN_GET_PLACE_NUM_PROCS(
int place_num) {
594 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 599 if (!TCR_4(__kmp_init_middle)) {
600 __kmp_middle_initialize();
602 if (!KMP_AFFINITY_CAPABLE())
604 if (place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks)
606 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
607 KMP_CPU_SET_ITERATE(i, mask) {
608 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
609 (!KMP_CPU_ISSET(i, mask))) {
618 void FTN_STDCALL FTN_GET_PLACE_PROC_IDS(
int place_num,
int *ids) {
619 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 623 if (!TCR_4(__kmp_init_middle)) {
624 __kmp_middle_initialize();
626 if (!KMP_AFFINITY_CAPABLE())
628 if (place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks)
630 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
632 KMP_CPU_SET_ITERATE(i, mask) {
633 if ((!KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
634 (!KMP_CPU_ISSET(i, mask))) {
642 int FTN_STDCALL FTN_GET_PLACE_NUM(
void) {
643 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 648 if (!TCR_4(__kmp_init_middle)) {
649 __kmp_middle_initialize();
651 if (!KMP_AFFINITY_CAPABLE())
653 gtid = __kmp_entry_gtid();
654 thread = __kmp_thread_from_gtid(gtid);
655 if (thread->th.th_current_place < 0)
657 return thread->th.th_current_place;
661 int FTN_STDCALL FTN_GET_PARTITION_NUM_PLACES(
void) {
662 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 665 int gtid, num_places, first_place, last_place;
667 if (!TCR_4(__kmp_init_middle)) {
668 __kmp_middle_initialize();
670 if (!KMP_AFFINITY_CAPABLE())
672 gtid = __kmp_entry_gtid();
673 thread = __kmp_thread_from_gtid(gtid);
674 first_place = thread->th.th_first_place;
675 last_place = thread->th.th_last_place;
676 if (first_place < 0 || last_place < 0)
678 if (first_place <= last_place)
679 num_places = last_place - first_place + 1;
681 num_places = __kmp_affinity_num_masks - first_place + last_place + 1;
686 void FTN_STDCALL FTN_GET_PARTITION_PLACE_NUMS(
int *place_nums) {
687 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 690 int i, gtid, place_num, first_place, last_place, start, end;
692 if (!TCR_4(__kmp_init_middle)) {
693 __kmp_middle_initialize();
695 if (!KMP_AFFINITY_CAPABLE())
697 gtid = __kmp_entry_gtid();
698 thread = __kmp_thread_from_gtid(gtid);
699 first_place = thread->th.th_first_place;
700 last_place = thread->th.th_last_place;
701 if (first_place < 0 || last_place < 0)
703 if (first_place <= last_place) {
710 for (i = 0, place_num = start; place_num <= end; ++place_num, ++i) {
711 place_nums[i] = place_num;
717 int FTN_STDCALL xexpand(FTN_GET_NUM_TEAMS)(void) {
721 kmp_info_t *thr = __kmp_entry_thread();
722 if (thr->th.th_teams_microtask) {
723 kmp_team_t *team = thr->th.th_team;
724 int tlevel = thr->th.th_teams_level;
725 int ii = team->t.t_level;
726 int dd = team->t.t_serialized;
727 int level = tlevel + 1;
728 KMP_DEBUG_ASSERT(ii >= tlevel);
730 for (dd = team->t.t_serialized; (dd > 0) && (ii > level); dd--, ii--) {
732 if (team->t.t_serialized && (!dd)) {
733 team = team->t.t_parent;
737 team = team->t.t_parent;
744 return team->t.t_parent->t.t_nproc;
752 int FTN_STDCALL xexpand(FTN_GET_TEAM_NUM)(void) {
756 kmp_info_t *thr = __kmp_entry_thread();
757 if (thr->th.th_teams_microtask) {
758 kmp_team_t *team = thr->th.th_team;
759 int tlevel = thr->th.th_teams_level;
760 int ii = team->t.t_level;
761 int dd = team->t.t_serialized;
762 int level = tlevel + 1;
763 KMP_DEBUG_ASSERT(ii >= tlevel);
765 for (dd = team->t.t_serialized; (dd > 0) && (ii > level); dd--, ii--) {
767 if (team->t.t_serialized && (!dd)) {
768 team = team->t.t_parent;
772 team = team->t.t_parent;
779 return team->t.t_master_tid;
787 int FTN_STDCALL xexpand(FTN_GET_DEFAULT_DEVICE)(void) {
788 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 791 return __kmp_entry_thread()->th.th_current_task->td_icvs.default_device;
795 void FTN_STDCALL xexpand(FTN_SET_DEFAULT_DEVICE)(
int KMP_DEREF arg) {
796 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 799 __kmp_entry_thread()->th.th_current_task->td_icvs.default_device =
804 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 806 int FTN_STDCALL FTN_GET_NUM_DEVICES(
void) {
return 0; }
808 #endif // KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 812 int FTN_STDCALL xexpand(FTN_IS_INITIAL_DEVICE)(void) {
return 1; }
818 int _Offload_get_device_number(
void) __attribute__((weak));
820 int FTN_STDCALL xexpand(FTN_IS_INITIAL_DEVICE)(void) {
821 if (_Offload_get_device_number) {
822 return _Offload_get_device_number() == -1;
828 #endif // ! KMP_OS_LINUX 830 #endif // OMP_40_ENABLED 832 #if OMP_45_ENABLED && defined(KMP_STUB) 835 int FTN_STDCALL FTN_GET_INITIAL_DEVICE(
void) {
return -1; }
838 void *FTN_STDCALL FTN_TARGET_ALLOC(
size_t size,
int device_num) {
return 0; }
840 void FTN_STDCALL FTN_TARGET_FREE(
void *device_ptr,
int device_num) {}
842 int FTN_STDCALL FTN_TARGET_IS_PRESENT(
void *ptr,
int device_num) {
return 0; }
844 int FTN_STDCALL FTN_TARGET_MEMCPY(
void *dst,
void *src,
size_t length,
845 size_t dst_offset,
size_t src_offset,
846 int dst_device,
int src_device) {
850 int FTN_STDCALL FTN_TARGET_MEMCPY_RECT(
851 void *dst,
void *src,
size_t element_size,
int num_dims,
852 const size_t *volume,
const size_t *dst_offsets,
const size_t *src_offsets,
853 const size_t *dst_dimensions,
const size_t *src_dimensions,
int dst_device,
858 int FTN_STDCALL FTN_TARGET_ASSOCIATE_PTR(
void *host_ptr,
void *device_ptr,
859 size_t size,
size_t device_offset,
864 int FTN_STDCALL FTN_TARGET_DISASSOCIATE_PTR(
void *host_ptr,
int device_num) {
867 #endif // OMP_45_ENABLED && defined(KMP_STUB) 870 typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
873 #if KMP_USE_DYNAMIC_LOCK 874 void FTN_STDCALL FTN_INIT_LOCK_WITH_HINT(
void **user_lock,
875 uintptr_t KMP_DEREF hint) {
877 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
879 __kmpc_init_lock_with_hint(NULL, __kmp_entry_gtid(), user_lock,
884 void FTN_STDCALL FTN_INIT_NEST_LOCK_WITH_HINT(
void **user_lock,
885 uintptr_t KMP_DEREF hint) {
887 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
889 __kmpc_init_nest_lock_with_hint(NULL, __kmp_entry_gtid(), user_lock,
896 void FTN_STDCALL xexpand(FTN_INIT_LOCK)(
void **user_lock) {
898 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
900 __kmpc_init_lock(NULL, __kmp_entry_gtid(), user_lock);
905 void FTN_STDCALL xexpand(FTN_INIT_NEST_LOCK)(
void **user_lock) {
907 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
909 __kmpc_init_nest_lock(NULL, __kmp_entry_gtid(), user_lock);
913 void FTN_STDCALL xexpand(FTN_DESTROY_LOCK)(
void **user_lock) {
915 *((kmp_stub_lock_t *)user_lock) = UNINIT;
917 __kmpc_destroy_lock(NULL, __kmp_entry_gtid(), user_lock);
921 void FTN_STDCALL xexpand(FTN_DESTROY_NEST_LOCK)(
void **user_lock) {
923 *((kmp_stub_lock_t *)user_lock) = UNINIT;
925 __kmpc_destroy_nest_lock(NULL, __kmp_entry_gtid(), user_lock);
929 void FTN_STDCALL xexpand(FTN_SET_LOCK)(
void **user_lock) {
931 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
934 if (*((kmp_stub_lock_t *)user_lock) != UNLOCKED) {
937 *((kmp_stub_lock_t *)user_lock) = LOCKED;
939 __kmpc_set_lock(NULL, __kmp_entry_gtid(), user_lock);
943 void FTN_STDCALL xexpand(FTN_SET_NEST_LOCK)(
void **user_lock) {
945 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
948 (*((
int *)user_lock))++;
950 __kmpc_set_nest_lock(NULL, __kmp_entry_gtid(), user_lock);
954 void FTN_STDCALL xexpand(FTN_UNSET_LOCK)(
void **user_lock) {
956 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
959 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
962 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
964 __kmpc_unset_lock(NULL, __kmp_entry_gtid(), user_lock);
968 void FTN_STDCALL xexpand(FTN_UNSET_NEST_LOCK)(
void **user_lock) {
970 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
973 if (*((kmp_stub_lock_t *)user_lock) == UNLOCKED) {
976 (*((
int *)user_lock))--;
978 __kmpc_unset_nest_lock(NULL, __kmp_entry_gtid(), user_lock);
982 int FTN_STDCALL xexpand(FTN_TEST_LOCK)(
void **user_lock) {
984 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
987 if (*((kmp_stub_lock_t *)user_lock) == LOCKED) {
990 *((kmp_stub_lock_t *)user_lock) = LOCKED;
993 return __kmpc_test_lock(NULL, __kmp_entry_gtid(), user_lock);
997 int FTN_STDCALL xexpand(FTN_TEST_NEST_LOCK)(
void **user_lock) {
999 if (*((kmp_stub_lock_t *)user_lock) == UNINIT) {
1002 return ++(*((
int *)user_lock));
1004 return __kmpc_test_nest_lock(NULL, __kmp_entry_gtid(), user_lock);
1008 double FTN_STDCALL xexpand(FTN_GET_WTIME)(void) {
1010 return __kmps_get_wtime();
1016 if (!__kmp_init_serial) {
1017 __kmp_serial_initialize();
1020 __kmp_elapsed(&data);
1025 double FTN_STDCALL xexpand(FTN_GET_WTICK)(void) {
1027 return __kmps_get_wtick();
1030 if (!__kmp_init_serial) {
1031 __kmp_serial_initialize();
1033 __kmp_elapsed_tick(&data);
1040 void *FTN_STDCALL FTN_MALLOC(
size_t KMP_DEREF size) {
1042 return kmpc_malloc(KMP_DEREF size);
1045 void *FTN_STDCALL FTN_ALIGNED_MALLOC(
size_t KMP_DEREF size,
1046 size_t KMP_DEREF alignment) {
1048 return kmpc_aligned_malloc(KMP_DEREF size, KMP_DEREF alignment);
1051 void *FTN_STDCALL FTN_CALLOC(
size_t KMP_DEREF nelem,
size_t KMP_DEREF elsize) {
1053 return kmpc_calloc(KMP_DEREF nelem, KMP_DEREF elsize);
1056 void *FTN_STDCALL FTN_REALLOC(
void *KMP_DEREF ptr,
size_t KMP_DEREF size) {
1058 return kmpc_realloc(KMP_DEREF ptr, KMP_DEREF size);
1061 void FTN_STDCALL FTN_FREE(
void *KMP_DEREF ptr) {
1063 kmpc_free(KMP_DEREF ptr);
1066 void FTN_STDCALL FTN_SET_WARNINGS_ON(
void) {
1068 __kmp_generate_warnings = kmp_warnings_explicit;
1072 void FTN_STDCALL FTN_SET_WARNINGS_OFF(
void) {
1074 __kmp_generate_warnings = FALSE;
1078 void FTN_STDCALL FTN_SET_DEFAULTS(
char const *str
1079 #ifndef PASS_ARGS_BY_VALUE
1085 #ifdef PASS_ARGS_BY_VALUE 1086 int len = (int)KMP_STRLEN(str);
1088 __kmp_aux_set_defaults(str, len);
1097 int FTN_STDCALL xexpand(FTN_GET_CANCELLATION)(void) {
1102 if (!__kmp_init_serial) {
1103 __kmp_serial_initialize();
1105 return __kmp_omp_cancellation;
1109 int FTN_STDCALL FTN_GET_CANCELLATION_STATUS(
int cancel_kind) {
1113 return __kmp_get_cancellation_status(cancel_kind);
1117 #endif // OMP_40_ENABLED 1121 int FTN_STDCALL FTN_GET_MAX_TASK_PRIORITY(
void) {
1125 if (!__kmp_init_serial) {
1126 __kmp_serial_initialize();
1128 return __kmp_max_task_priority;
1134 #ifdef KMP_USE_VERSION_SYMBOLS 1155 xaliasify(FTN_SET_NUM_THREADS, 10);
1156 xaliasify(FTN_GET_NUM_THREADS, 10);
1157 xaliasify(FTN_GET_MAX_THREADS, 10);
1158 xaliasify(FTN_GET_THREAD_NUM, 10);
1159 xaliasify(FTN_GET_NUM_PROCS, 10);
1160 xaliasify(FTN_IN_PARALLEL, 10);
1161 xaliasify(FTN_SET_DYNAMIC, 10);
1162 xaliasify(FTN_GET_DYNAMIC, 10);
1163 xaliasify(FTN_SET_NESTED, 10);
1164 xaliasify(FTN_GET_NESTED, 10);
1165 xaliasify(FTN_INIT_LOCK, 10);
1166 xaliasify(FTN_INIT_NEST_LOCK, 10);
1167 xaliasify(FTN_DESTROY_LOCK, 10);
1168 xaliasify(FTN_DESTROY_NEST_LOCK, 10);
1169 xaliasify(FTN_SET_LOCK, 10);
1170 xaliasify(FTN_SET_NEST_LOCK, 10);
1171 xaliasify(FTN_UNSET_LOCK, 10);
1172 xaliasify(FTN_UNSET_NEST_LOCK, 10);
1173 xaliasify(FTN_TEST_LOCK, 10);
1174 xaliasify(FTN_TEST_NEST_LOCK, 10);
1177 xaliasify(FTN_GET_WTICK, 20);
1178 xaliasify(FTN_GET_WTIME, 20);
1181 xaliasify(FTN_SET_SCHEDULE, 30);
1182 xaliasify(FTN_GET_SCHEDULE, 30);
1183 xaliasify(FTN_GET_THREAD_LIMIT, 30);
1184 xaliasify(FTN_SET_MAX_ACTIVE_LEVELS, 30);
1185 xaliasify(FTN_GET_MAX_ACTIVE_LEVELS, 30);
1186 xaliasify(FTN_GET_LEVEL, 30);
1187 xaliasify(FTN_GET_ANCESTOR_THREAD_NUM, 30);
1188 xaliasify(FTN_GET_TEAM_SIZE, 30);
1189 xaliasify(FTN_GET_ACTIVE_LEVEL, 30);
1190 xaliasify(FTN_INIT_LOCK, 30);
1191 xaliasify(FTN_INIT_NEST_LOCK, 30);
1192 xaliasify(FTN_DESTROY_LOCK, 30);
1193 xaliasify(FTN_DESTROY_NEST_LOCK, 30);
1194 xaliasify(FTN_SET_LOCK, 30);
1195 xaliasify(FTN_SET_NEST_LOCK, 30);
1196 xaliasify(FTN_UNSET_LOCK, 30);
1197 xaliasify(FTN_UNSET_NEST_LOCK, 30);
1198 xaliasify(FTN_TEST_LOCK, 30);
1199 xaliasify(FTN_TEST_NEST_LOCK, 30);
1202 xaliasify(FTN_IN_FINAL, 31);
1206 xaliasify(FTN_GET_PROC_BIND, 40);
1207 xaliasify(FTN_GET_NUM_TEAMS, 40);
1208 xaliasify(FTN_GET_TEAM_NUM, 40);
1209 xaliasify(FTN_GET_CANCELLATION, 40);
1210 xaliasify(FTN_GET_DEFAULT_DEVICE, 40);
1211 xaliasify(FTN_SET_DEFAULT_DEVICE, 40);
1212 xaliasify(FTN_IS_INITIAL_DEVICE, 40);
1224 xversionify(FTN_SET_NUM_THREADS, 10,
"OMP_1.0");
1225 xversionify(FTN_GET_NUM_THREADS, 10,
"OMP_1.0");
1226 xversionify(FTN_GET_MAX_THREADS, 10,
"OMP_1.0");
1227 xversionify(FTN_GET_THREAD_NUM, 10,
"OMP_1.0");
1228 xversionify(FTN_GET_NUM_PROCS, 10,
"OMP_1.0");
1229 xversionify(FTN_IN_PARALLEL, 10,
"OMP_1.0");
1230 xversionify(FTN_SET_DYNAMIC, 10,
"OMP_1.0");
1231 xversionify(FTN_GET_DYNAMIC, 10,
"OMP_1.0");
1232 xversionify(FTN_SET_NESTED, 10,
"OMP_1.0");
1233 xversionify(FTN_GET_NESTED, 10,
"OMP_1.0");
1234 xversionify(FTN_INIT_LOCK, 10,
"OMP_1.0");
1235 xversionify(FTN_INIT_NEST_LOCK, 10,
"OMP_1.0");
1236 xversionify(FTN_DESTROY_LOCK, 10,
"OMP_1.0");
1237 xversionify(FTN_DESTROY_NEST_LOCK, 10,
"OMP_1.0");
1238 xversionify(FTN_SET_LOCK, 10,
"OMP_1.0");
1239 xversionify(FTN_SET_NEST_LOCK, 10,
"OMP_1.0");
1240 xversionify(FTN_UNSET_LOCK, 10,
"OMP_1.0");
1241 xversionify(FTN_UNSET_NEST_LOCK, 10,
"OMP_1.0");
1242 xversionify(FTN_TEST_LOCK, 10,
"OMP_1.0");
1243 xversionify(FTN_TEST_NEST_LOCK, 10,
"OMP_1.0");
1246 xversionify(FTN_GET_WTICK, 20,
"OMP_2.0");
1247 xversionify(FTN_GET_WTIME, 20,
"OMP_2.0");
1250 xversionify(FTN_SET_SCHEDULE, 30,
"OMP_3.0");
1251 xversionify(FTN_GET_SCHEDULE, 30,
"OMP_3.0");
1252 xversionify(FTN_GET_THREAD_LIMIT, 30,
"OMP_3.0");
1253 xversionify(FTN_SET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1254 xversionify(FTN_GET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1255 xversionify(FTN_GET_ANCESTOR_THREAD_NUM, 30,
"OMP_3.0");
1256 xversionify(FTN_GET_LEVEL, 30,
"OMP_3.0");
1257 xversionify(FTN_GET_TEAM_SIZE, 30,
"OMP_3.0");
1258 xversionify(FTN_GET_ACTIVE_LEVEL, 30,
"OMP_3.0");
1261 xversionify(FTN_INIT_LOCK, 30,
"OMP_3.0");
1262 xversionify(FTN_INIT_NEST_LOCK, 30,
"OMP_3.0");
1263 xversionify(FTN_DESTROY_LOCK, 30,
"OMP_3.0");
1264 xversionify(FTN_DESTROY_NEST_LOCK, 30,
"OMP_3.0");
1265 xversionify(FTN_SET_LOCK, 30,
"OMP_3.0");
1266 xversionify(FTN_SET_NEST_LOCK, 30,
"OMP_3.0");
1267 xversionify(FTN_UNSET_LOCK, 30,
"OMP_3.0");
1268 xversionify(FTN_UNSET_NEST_LOCK, 30,
"OMP_3.0");
1269 xversionify(FTN_TEST_LOCK, 30,
"OMP_3.0");
1270 xversionify(FTN_TEST_NEST_LOCK, 30,
"OMP_3.0");
1273 xversionify(FTN_IN_FINAL, 31,
"OMP_3.1");
1277 xversionify(FTN_GET_PROC_BIND, 40,
"OMP_4.0");
1278 xversionify(FTN_GET_NUM_TEAMS, 40,
"OMP_4.0");
1279 xversionify(FTN_GET_TEAM_NUM, 40,
"OMP_4.0");
1280 xversionify(FTN_GET_CANCELLATION, 40,
"OMP_4.0");
1281 xversionify(FTN_GET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1282 xversionify(FTN_SET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1283 xversionify(FTN_IS_INITIAL_DEVICE, 40,
"OMP_4.0");
1294 #endif // KMP_USE_VERSION_SYMBOLS 1298 #endif // __cplusplus KMP_EXPORT kmp_int32 __kmpc_bound_num_threads(ident_t *)