17 # error The support file kmp_ftn_entry.h should not be compiled by itself. 40 #ifdef KMP_GOMP_COMPAT 41 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_UPPER) 42 # define PASS_ARGS_BY_VALUE 1 46 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_APPEND) 47 # define PASS_ARGS_BY_VALUE 1 52 #ifdef PASS_ARGS_BY_VALUE 59 FTN_SET_STACKSIZE(
int KMP_DEREF arg )
62 __kmps_set_stacksize( KMP_DEREF arg );
65 __kmp_aux_set_stacksize( (
size_t) KMP_DEREF arg );
70 FTN_SET_STACKSIZE_S(
size_t KMP_DEREF arg )
73 __kmps_set_stacksize( KMP_DEREF arg );
76 __kmp_aux_set_stacksize( KMP_DEREF arg );
81 FTN_GET_STACKSIZE(
void )
84 return __kmps_get_stacksize();
86 if ( ! __kmp_init_serial ) {
87 __kmp_serial_initialize();
89 return (
int)__kmp_stksize;
94 FTN_GET_STACKSIZE_S(
void )
97 return __kmps_get_stacksize();
99 if ( ! __kmp_init_serial ) {
100 __kmp_serial_initialize();
102 return __kmp_stksize;
107 FTN_SET_BLOCKTIME(
int KMP_DEREF arg )
110 __kmps_set_blocktime( KMP_DEREF arg );
115 gtid = __kmp_entry_gtid();
116 tid = __kmp_tid_from_gtid(gtid);
117 thread = __kmp_thread_from_gtid(gtid);
119 __kmp_aux_set_blocktime( KMP_DEREF arg, thread, tid );
124 FTN_GET_BLOCKTIME(
void )
127 return __kmps_get_blocktime();
133 gtid = __kmp_entry_gtid();
134 tid = __kmp_tid_from_gtid(gtid);
135 thread = __kmp_thread_from_gtid(gtid);
136 team = __kmp_threads[ gtid ] -> th.th_team;
139 if ( __kmp_dflt_blocktime == KMP_MAX_BLOCKTIME ) {
140 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
141 gtid, team->t.t_id, tid, KMP_MAX_BLOCKTIME) );
142 return KMP_MAX_BLOCKTIME;
144 #ifdef KMP_ADJUST_BLOCKTIME 145 else if ( __kmp_zero_bt && !get__bt_set( team, tid ) ) {
146 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
147 gtid, team->t.t_id, tid, 0) );
152 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
153 gtid, team->t.t_id, tid, get__blocktime( team, tid ) ) );
154 return get__blocktime( team, tid );
160 FTN_SET_LIBRARY_SERIAL(
void )
163 __kmps_set_library( library_serial );
166 __kmp_user_set_library( library_serial );
171 FTN_SET_LIBRARY_TURNAROUND(
void )
174 __kmps_set_library( library_turnaround );
177 __kmp_user_set_library( library_turnaround );
182 FTN_SET_LIBRARY_THROUGHPUT(
void )
185 __kmps_set_library( library_throughput );
188 __kmp_user_set_library( library_throughput );
193 FTN_SET_LIBRARY(
int KMP_DEREF arg )
196 __kmps_set_library( KMP_DEREF arg );
198 enum library_type lib;
199 lib = (
enum library_type) KMP_DEREF arg;
201 __kmp_user_set_library( lib );
206 FTN_GET_LIBRARY (
void)
209 return __kmps_get_library();
211 if ( ! __kmp_init_serial ) {
212 __kmp_serial_initialize();
214 return ((
int) __kmp_library);
219 FTN_SET_DISP_NUM_BUFFERS(
int KMP_DEREF arg )
226 if( __kmp_init_serial == 0 && (KMP_DEREF arg) > 0 )
227 __kmp_dispatch_num_buffers = KMP_DEREF arg;
232 FTN_SET_AFFINITY(
void **mask )
234 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 237 if ( ! TCR_4(__kmp_init_middle) ) {
238 __kmp_middle_initialize();
240 return __kmp_aux_set_affinity( mask );
245 FTN_GET_AFFINITY(
void **mask )
247 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 250 if ( ! TCR_4(__kmp_init_middle) ) {
251 __kmp_middle_initialize();
253 return __kmp_aux_get_affinity( mask );
258 FTN_GET_AFFINITY_MAX_PROC(
void )
260 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 266 if ( ! TCR_4(__kmp_init_middle) ) {
267 __kmp_middle_initialize();
269 return __kmp_aux_get_affinity_max_proc();
274 FTN_CREATE_AFFINITY_MASK(
void **mask )
276 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 282 kmp_affin_mask_t* mask_internals;
283 if ( ! TCR_4(__kmp_init_middle) ) {
284 __kmp_middle_initialize();
286 mask_internals = __kmp_affinity_dispatch->allocate_mask();
287 KMP_CPU_ZERO( mask_internals );
288 *mask = mask_internals;
293 FTN_DESTROY_AFFINITY_MASK(
void **mask )
295 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 301 kmp_affin_mask_t* mask_internals;
302 if ( ! TCR_4(__kmp_init_middle) ) {
303 __kmp_middle_initialize();
305 if ( __kmp_env_consistency_check ) {
306 if ( *mask == NULL ) {
307 KMP_FATAL( AffinityInvalidMask,
"kmp_destroy_affinity_mask" );
310 mask_internals = (kmp_affin_mask_t*)(*mask);
311 __kmp_affinity_dispatch->deallocate_mask(mask_internals);
317 FTN_SET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
319 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 322 if ( ! TCR_4(__kmp_init_middle) ) {
323 __kmp_middle_initialize();
325 return __kmp_aux_set_affinity_mask_proc( KMP_DEREF proc, mask );
330 FTN_UNSET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
332 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 335 if ( ! TCR_4(__kmp_init_middle) ) {
336 __kmp_middle_initialize();
338 return __kmp_aux_unset_affinity_mask_proc( KMP_DEREF proc, mask );
343 FTN_GET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
345 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 348 if ( ! TCR_4(__kmp_init_middle) ) {
349 __kmp_middle_initialize();
351 return __kmp_aux_get_affinity_mask_proc( KMP_DEREF proc, mask );
361 xexpand(FTN_SET_NUM_THREADS)(
int KMP_DEREF arg )
366 __kmp_set_num_threads( KMP_DEREF arg, __kmp_entry_gtid() );
373 xexpand(FTN_GET_NUM_THREADS)( void )
384 xexpand(FTN_GET_MAX_THREADS)( void )
391 if ( ! TCR_4(__kmp_init_middle) ) {
392 __kmp_middle_initialize();
394 gtid = __kmp_entry_gtid();
395 thread = __kmp_threads[ gtid ];
397 return thread -> th.th_current_task -> td_icvs.nproc;
402 xexpand(FTN_GET_THREAD_NUM)( void )
409 #if KMP_OS_DARWIN || KMP_OS_FREEBSD || KMP_OS_NETBSD 410 gtid = __kmp_entry_gtid();
412 if (!__kmp_init_parallel ||
413 (gtid = (
int)((kmp_intptr_t)TlsGetValue( __kmp_gtid_threadprivate_key ))) == 0) {
420 #ifdef KMP_TDATA_GTID 421 if ( __kmp_gtid_mode >= 3 ) {
422 if ((gtid = __kmp_gtid) == KMP_GTID_DNE) {
427 if (!__kmp_init_parallel ||
428 (gtid = (kmp_intptr_t)(pthread_getspecific( __kmp_gtid_threadprivate_key ))) == 0) {
432 #ifdef KMP_TDATA_GTID 436 #error Unknown or unsupported OS 439 return __kmp_tid_from_gtid( gtid );
444 FTN_GET_NUM_KNOWN_THREADS(
void )
449 if ( ! __kmp_init_serial ) {
450 __kmp_serial_initialize();
454 return TCR_4(__kmp_nth);
459 xexpand(FTN_GET_NUM_PROCS)( void )
464 if ( ! TCR_4(__kmp_init_middle) ) {
465 __kmp_middle_initialize();
467 return __kmp_avail_proc;
472 xexpand(FTN_SET_NESTED)(
int KMP_DEREF flag )
475 __kmps_set_nested( KMP_DEREF flag );
479 thread = __kmp_entry_thread();
480 __kmp_save_internal_controls( thread );
481 set__nested( thread, ( (KMP_DEREF flag) ? TRUE : FALSE ) );
487 xexpand(FTN_GET_NESTED)( void )
490 return __kmps_get_nested();
493 thread = __kmp_entry_thread();
494 return get__nested( thread );
499 xexpand(FTN_SET_DYNAMIC)(
int KMP_DEREF flag )
502 __kmps_set_dynamic( KMP_DEREF flag ? TRUE : FALSE );
506 thread = __kmp_entry_thread();
508 __kmp_save_internal_controls( thread );
509 set__dynamic( thread, KMP_DEREF flag ? TRUE : FALSE );
515 xexpand(FTN_GET_DYNAMIC)( void )
518 return __kmps_get_dynamic();
521 thread = __kmp_entry_thread();
522 return get__dynamic( thread );
527 xexpand(FTN_IN_PARALLEL)( void )
532 kmp_info_t *th = __kmp_entry_thread();
534 if ( th->th.th_teams_microtask ) {
539 return ( th->th.th_team->t.t_active_level ? 1 : 0 );
543 return ( th->th.th_root->r.r_in_parallel ? FTN_TRUE : FTN_FALSE );
548 xexpand(FTN_SET_SCHEDULE)( kmp_sched_t KMP_DEREF kind,
int KMP_DEREF modifier )
551 __kmps_set_schedule( KMP_DEREF kind, KMP_DEREF modifier );
555 __kmp_set_schedule( __kmp_entry_gtid(), KMP_DEREF kind, KMP_DEREF modifier );
560 xexpand(FTN_GET_SCHEDULE)( kmp_sched_t * kind,
int * modifier )
563 __kmps_get_schedule( kind, modifier );
567 __kmp_get_schedule( __kmp_entry_gtid(), kind, modifier );
572 xexpand(FTN_SET_MAX_ACTIVE_LEVELS)(
int KMP_DEREF arg )
579 __kmp_set_max_active_levels( __kmp_entry_gtid(), KMP_DEREF arg );
584 xexpand(FTN_GET_MAX_ACTIVE_LEVELS)( void )
591 return __kmp_get_max_active_levels( __kmp_entry_gtid() );
596 xexpand(FTN_GET_ACTIVE_LEVEL)( void )
603 return __kmp_entry_thread() -> th.th_team -> t.t_active_level;
608 xexpand(FTN_GET_LEVEL)( void )
615 return __kmp_entry_thread() -> th.th_team -> t.t_level;
620 xexpand(FTN_GET_ANCESTOR_THREAD_NUM)(
int KMP_DEREF level )
623 return ( KMP_DEREF level ) ? ( -1 ) : ( 0 );
625 return __kmp_get_ancestor_thread_num( __kmp_entry_gtid(), KMP_DEREF level );
630 xexpand(FTN_GET_TEAM_SIZE)(
int KMP_DEREF level )
633 return ( KMP_DEREF level ) ? ( -1 ) : ( 1 );
635 return __kmp_get_team_size( __kmp_entry_gtid(), KMP_DEREF level );
640 xexpand(FTN_GET_THREAD_LIMIT)( void )
645 if ( ! __kmp_init_serial ) {
646 __kmp_serial_initialize();
649 return __kmp_max_nth;
654 xexpand(FTN_IN_FINAL)( void )
659 if ( ! TCR_4(__kmp_init_parallel) ) {
662 return __kmp_entry_thread() -> th.th_current_task -> td_flags.final;
669 kmp_proc_bind_t FTN_STDCALL
670 xexpand(FTN_GET_PROC_BIND)( void )
673 return __kmps_get_proc_bind();
675 return get__proc_bind( __kmp_entry_thread() );
681 FTN_GET_NUM_PLACES(
void )
683 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 686 if ( ! TCR_4(__kmp_init_middle) ) {
687 __kmp_middle_initialize();
689 if (!KMP_AFFINITY_CAPABLE())
691 return __kmp_affinity_num_masks;
696 FTN_GET_PLACE_NUM_PROCS(
int place_num )
698 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 703 if ( ! TCR_4(__kmp_init_middle) ) {
704 __kmp_middle_initialize();
706 if (!KMP_AFFINITY_CAPABLE())
708 if ( place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks )
710 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
711 KMP_CPU_SET_ITERATE(i, mask) {
712 if ((! KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
713 (!KMP_CPU_ISSET(i, mask))) {
723 FTN_GET_PLACE_PROC_IDS(
int place_num,
int *ids )
725 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 729 if ( ! TCR_4(__kmp_init_middle) ) {
730 __kmp_middle_initialize();
732 if (!KMP_AFFINITY_CAPABLE())
734 if ( place_num < 0 || place_num >= (
int)__kmp_affinity_num_masks )
736 kmp_affin_mask_t *mask = KMP_CPU_INDEX(__kmp_affinity_masks, place_num);
738 KMP_CPU_SET_ITERATE(i, mask) {
739 if ((! KMP_CPU_ISSET(i, __kmp_affin_fullMask)) ||
740 (!KMP_CPU_ISSET(i, mask))) {
749 FTN_GET_PLACE_NUM(
void )
751 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 756 if ( ! TCR_4(__kmp_init_middle) ) {
757 __kmp_middle_initialize();
759 if (!KMP_AFFINITY_CAPABLE())
761 gtid = __kmp_entry_gtid();
762 thread = __kmp_thread_from_gtid(gtid);
763 if ( thread->th.th_current_place < 0 )
765 return thread->th.th_current_place;
770 FTN_GET_PARTITION_NUM_PLACES(
void )
772 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 775 int gtid, num_places, first_place, last_place;
777 if ( ! TCR_4(__kmp_init_middle) ) {
778 __kmp_middle_initialize();
780 if (!KMP_AFFINITY_CAPABLE())
782 gtid = __kmp_entry_gtid();
783 thread = __kmp_thread_from_gtid(gtid);
784 first_place = thread->th.th_first_place;
785 last_place = thread->th.th_last_place;
786 if ( first_place < 0 || last_place < 0 )
788 if ( first_place <= last_place )
789 num_places = last_place - first_place + 1;
791 num_places = __kmp_affinity_num_masks - first_place + last_place + 1;
797 FTN_GET_PARTITION_PLACE_NUMS(
int *place_nums ) {
798 #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED 801 int i, gtid, place_num, first_place, last_place, start, end;
803 if ( ! TCR_4(__kmp_init_middle) ) {
804 __kmp_middle_initialize();
806 if (!KMP_AFFINITY_CAPABLE())
808 gtid = __kmp_entry_gtid();
809 thread = __kmp_thread_from_gtid(gtid);
810 first_place = thread->th.th_first_place;
811 last_place = thread->th.th_last_place;
812 if ( first_place < 0 || last_place < 0 )
814 if ( first_place <= last_place ) {
821 for (i = 0, place_num = start; place_num <= end; ++place_num, ++i) {
822 place_nums[i] = place_num;
829 xexpand(FTN_GET_NUM_TEAMS)( void )
834 kmp_info_t *thr = __kmp_entry_thread();
835 if ( thr->th.th_teams_microtask ) {
836 kmp_team_t *team = thr->th.th_team;
837 int tlevel = thr->th.th_teams_level;
838 int ii = team->t.t_level;
839 int dd = team -> t.t_serialized;
840 int level = tlevel + 1;
841 KMP_DEBUG_ASSERT( ii >= tlevel );
844 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
847 if( team -> t.t_serialized && ( !dd ) ) {
848 team = team->t.t_parent;
852 team = team->t.t_parent;
859 return team->t.t_parent->t.t_nproc;
868 xexpand(FTN_GET_TEAM_NUM)( void )
873 kmp_info_t *thr = __kmp_entry_thread();
874 if ( thr->th.th_teams_microtask ) {
875 kmp_team_t *team = thr->th.th_team;
876 int tlevel = thr->th.th_teams_level;
877 int ii = team->t.t_level;
878 int dd = team -> t.t_serialized;
879 int level = tlevel + 1;
880 KMP_DEBUG_ASSERT( ii >= tlevel );
883 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
886 if( team -> t.t_serialized && ( !dd ) ) {
887 team = team->t.t_parent;
891 team = team->t.t_parent;
898 return team->t.t_master_tid;
907 xexpand(FTN_GET_DEFAULT_DEVICE)( void )
909 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 912 return __kmp_entry_thread() -> th.th_current_task -> td_icvs.default_device;
917 xexpand(FTN_SET_DEFAULT_DEVICE)(
int KMP_DEREF arg )
919 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 922 __kmp_entry_thread() -> th.th_current_task -> td_icvs.default_device = KMP_DEREF arg;
926 #if KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 929 FTN_GET_NUM_DEVICES(
void )
934 #endif // KMP_MIC || KMP_OS_DARWIN || defined(KMP_STUB) 939 xexpand(FTN_IS_INITIAL_DEVICE)( void )
948 int _Offload_get_device_number(
void ) __attribute__((weak));
951 xexpand(FTN_IS_INITIAL_DEVICE)( void )
953 if( _Offload_get_device_number ) {
954 return _Offload_get_device_number() == -1;
960 #endif // ! KMP_OS_LINUX 962 #endif // OMP_40_ENABLED 964 #if OMP_45_ENABLED && defined(KMP_STUB) 968 FTN_GET_INITIAL_DEVICE(
void)
975 FTN_TARGET_ALLOC(
size_t size,
int device_num)
981 FTN_TARGET_FREE(
void * device_ptr,
int device_num)
986 FTN_TARGET_IS_PRESENT(
void * ptr,
int device_num)
992 FTN_TARGET_MEMCPY(
void *dst,
void *src,
size_t length,
size_t dst_offset,
993 size_t src_offset,
int dst_device,
int src_device)
999 FTN_TARGET_MEMCPY_RECT(
void *dst,
void *src,
size_t element_size,
int num_dims,
1000 const size_t *volume,
const size_t *dst_offsets,
1001 const size_t *src_offsets,
const size_t *dst_dimensions,
1002 const size_t *src_dimensions,
int dst_device,
int src_device)
1008 FTN_TARGET_ASSOCIATE_PTR(
void *host_ptr,
void *device_ptr,
size_t size,
1009 size_t device_offset,
int device_num)
1015 FTN_TARGET_DISASSOCIATE_PTR(
void *host_ptr,
int device_num)
1019 #endif // OMP_45_ENABLED && defined(KMP_STUB) 1022 typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
1025 #if KMP_USE_DYNAMIC_LOCK 1027 FTN_INIT_LOCK_WITH_HINT(
void **user_lock, uintptr_t KMP_DEREF hint )
1030 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1032 __kmpc_init_lock_with_hint( NULL, __kmp_entry_gtid(), user_lock, KMP_DEREF hint );
1037 FTN_INIT_NEST_LOCK_WITH_HINT(
void **user_lock, uintptr_t KMP_DEREF hint )
1040 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1042 __kmpc_init_nest_lock_with_hint( NULL, __kmp_entry_gtid(), user_lock, KMP_DEREF hint );
1049 xexpand(FTN_INIT_LOCK)(
void **user_lock )
1052 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1054 __kmpc_init_lock( NULL, __kmp_entry_gtid(), user_lock );
1060 xexpand(FTN_INIT_NEST_LOCK)(
void **user_lock )
1063 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1065 __kmpc_init_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1070 xexpand(FTN_DESTROY_LOCK)(
void **user_lock )
1073 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1075 __kmpc_destroy_lock( NULL, __kmp_entry_gtid(), user_lock );
1080 xexpand(FTN_DESTROY_NEST_LOCK)(
void **user_lock )
1083 *((kmp_stub_lock_t *)user_lock) = UNINIT;
1085 __kmpc_destroy_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1090 xexpand(FTN_SET_LOCK)(
void **user_lock )
1093 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1096 if ( *((kmp_stub_lock_t *)user_lock) != UNLOCKED ) {
1099 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1101 __kmpc_set_lock( NULL, __kmp_entry_gtid(), user_lock );
1106 xexpand(FTN_SET_NEST_LOCK)(
void **user_lock )
1109 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1112 (*((
int *)user_lock))++;
1114 __kmpc_set_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1119 xexpand(FTN_UNSET_LOCK)(
void **user_lock )
1122 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1125 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
1128 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
1130 __kmpc_unset_lock( NULL, __kmp_entry_gtid(), user_lock );
1135 xexpand(FTN_UNSET_NEST_LOCK)(
void **user_lock )
1138 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1141 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
1144 (*((
int *)user_lock))--;
1146 __kmpc_unset_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1151 xexpand(FTN_TEST_LOCK)(
void **user_lock )
1154 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1157 if ( *((kmp_stub_lock_t *)user_lock) == LOCKED ) {
1160 *((kmp_stub_lock_t *)user_lock) = LOCKED;
1163 return __kmpc_test_lock( NULL, __kmp_entry_gtid(), user_lock );
1168 xexpand(FTN_TEST_NEST_LOCK)(
void **user_lock )
1171 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
1174 return ++(*((
int *)user_lock));
1176 return __kmpc_test_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
1181 xexpand(FTN_GET_WTIME)( void )
1184 return __kmps_get_wtime();
1190 if ( ! __kmp_init_serial ) {
1191 __kmp_serial_initialize();
1194 __kmp_elapsed( & data );
1200 xexpand(FTN_GET_WTICK)( void )
1203 return __kmps_get_wtick();
1206 if ( ! __kmp_init_serial ) {
1207 __kmp_serial_initialize();
1209 __kmp_elapsed_tick( & data );
1217 FTN_MALLOC(
size_t KMP_DEREF size )
1220 return kmpc_malloc( KMP_DEREF size );
1224 FTN_ALIGNED_MALLOC(
size_t KMP_DEREF size,
size_t KMP_DEREF alignment )
1227 return kmpc_aligned_malloc( KMP_DEREF size, KMP_DEREF alignment );
1231 FTN_CALLOC(
size_t KMP_DEREF nelem,
size_t KMP_DEREF elsize )
1234 return kmpc_calloc( KMP_DEREF nelem, KMP_DEREF elsize );
1238 FTN_REALLOC(
void * KMP_DEREF ptr,
size_t KMP_DEREF size )
1241 return kmpc_realloc( KMP_DEREF ptr, KMP_DEREF size );
1245 FTN_FREE(
void * KMP_DEREF ptr )
1248 kmpc_free( KMP_DEREF ptr );
1252 FTN_SET_WARNINGS_ON(
void )
1255 __kmp_generate_warnings = kmp_warnings_explicit;
1260 FTN_SET_WARNINGS_OFF(
void )
1263 __kmp_generate_warnings = FALSE;
1268 FTN_SET_DEFAULTS(
char const * str
1269 #ifndef PASS_ARGS_BY_VALUE
1275 #ifdef PASS_ARGS_BY_VALUE 1276 int len = (int)KMP_STRLEN( str );
1278 __kmp_aux_set_defaults( str, len );
1288 xexpand(FTN_GET_CANCELLATION)(void) {
1293 if ( ! __kmp_init_serial ) {
1294 __kmp_serial_initialize();
1296 return __kmp_omp_cancellation;
1301 FTN_GET_CANCELLATION_STATUS(
int cancel_kind) {
1305 return __kmp_get_cancellation_status(cancel_kind);
1309 #endif // OMP_40_ENABLED 1314 FTN_GET_MAX_TASK_PRIORITY(
void )
1319 if ( ! __kmp_init_serial ) {
1320 __kmp_serial_initialize();
1322 return __kmp_max_task_priority;
1328 #ifdef KMP_USE_VERSION_SYMBOLS 1347 xaliasify(FTN_SET_NUM_THREADS, 10);
1348 xaliasify(FTN_GET_NUM_THREADS, 10);
1349 xaliasify(FTN_GET_MAX_THREADS, 10);
1350 xaliasify(FTN_GET_THREAD_NUM, 10);
1351 xaliasify(FTN_GET_NUM_PROCS, 10);
1352 xaliasify(FTN_IN_PARALLEL, 10);
1353 xaliasify(FTN_SET_DYNAMIC, 10);
1354 xaliasify(FTN_GET_DYNAMIC, 10);
1355 xaliasify(FTN_SET_NESTED, 10);
1356 xaliasify(FTN_GET_NESTED, 10);
1357 xaliasify(FTN_INIT_LOCK, 10);
1358 xaliasify(FTN_INIT_NEST_LOCK, 10);
1359 xaliasify(FTN_DESTROY_LOCK, 10);
1360 xaliasify(FTN_DESTROY_NEST_LOCK, 10);
1361 xaliasify(FTN_SET_LOCK, 10);
1362 xaliasify(FTN_SET_NEST_LOCK, 10);
1363 xaliasify(FTN_UNSET_LOCK, 10);
1364 xaliasify(FTN_UNSET_NEST_LOCK, 10);
1365 xaliasify(FTN_TEST_LOCK, 10);
1366 xaliasify(FTN_TEST_NEST_LOCK, 10);
1369 xaliasify(FTN_GET_WTICK, 20);
1370 xaliasify(FTN_GET_WTIME, 20);
1373 xaliasify(FTN_SET_SCHEDULE, 30);
1374 xaliasify(FTN_GET_SCHEDULE, 30);
1375 xaliasify(FTN_GET_THREAD_LIMIT, 30);
1376 xaliasify(FTN_SET_MAX_ACTIVE_LEVELS, 30);
1377 xaliasify(FTN_GET_MAX_ACTIVE_LEVELS, 30);
1378 xaliasify(FTN_GET_LEVEL, 30);
1379 xaliasify(FTN_GET_ANCESTOR_THREAD_NUM, 30);
1380 xaliasify(FTN_GET_TEAM_SIZE, 30);
1381 xaliasify(FTN_GET_ACTIVE_LEVEL, 30);
1382 xaliasify(FTN_INIT_LOCK, 30);
1383 xaliasify(FTN_INIT_NEST_LOCK, 30);
1384 xaliasify(FTN_DESTROY_LOCK, 30);
1385 xaliasify(FTN_DESTROY_NEST_LOCK, 30);
1386 xaliasify(FTN_SET_LOCK, 30);
1387 xaliasify(FTN_SET_NEST_LOCK, 30);
1388 xaliasify(FTN_UNSET_LOCK, 30);
1389 xaliasify(FTN_UNSET_NEST_LOCK, 30);
1390 xaliasify(FTN_TEST_LOCK, 30);
1391 xaliasify(FTN_TEST_NEST_LOCK, 30);
1394 xaliasify(FTN_IN_FINAL, 31);
1398 xaliasify(FTN_GET_PROC_BIND, 40);
1399 xaliasify(FTN_GET_NUM_TEAMS, 40);
1400 xaliasify(FTN_GET_TEAM_NUM, 40);
1401 xaliasify(FTN_GET_CANCELLATION, 40);
1402 xaliasify(FTN_GET_DEFAULT_DEVICE, 40);
1403 xaliasify(FTN_SET_DEFAULT_DEVICE, 40);
1404 xaliasify(FTN_IS_INITIAL_DEVICE, 40);
1416 xversionify(FTN_SET_NUM_THREADS, 10,
"OMP_1.0");
1417 xversionify(FTN_GET_NUM_THREADS, 10,
"OMP_1.0");
1418 xversionify(FTN_GET_MAX_THREADS, 10,
"OMP_1.0");
1419 xversionify(FTN_GET_THREAD_NUM, 10,
"OMP_1.0");
1420 xversionify(FTN_GET_NUM_PROCS, 10,
"OMP_1.0");
1421 xversionify(FTN_IN_PARALLEL, 10,
"OMP_1.0");
1422 xversionify(FTN_SET_DYNAMIC, 10,
"OMP_1.0");
1423 xversionify(FTN_GET_DYNAMIC, 10,
"OMP_1.0");
1424 xversionify(FTN_SET_NESTED, 10,
"OMP_1.0");
1425 xversionify(FTN_GET_NESTED, 10,
"OMP_1.0");
1426 xversionify(FTN_INIT_LOCK, 10,
"OMP_1.0");
1427 xversionify(FTN_INIT_NEST_LOCK, 10,
"OMP_1.0");
1428 xversionify(FTN_DESTROY_LOCK, 10,
"OMP_1.0");
1429 xversionify(FTN_DESTROY_NEST_LOCK, 10,
"OMP_1.0");
1430 xversionify(FTN_SET_LOCK, 10,
"OMP_1.0");
1431 xversionify(FTN_SET_NEST_LOCK, 10,
"OMP_1.0");
1432 xversionify(FTN_UNSET_LOCK, 10,
"OMP_1.0");
1433 xversionify(FTN_UNSET_NEST_LOCK, 10,
"OMP_1.0");
1434 xversionify(FTN_TEST_LOCK, 10,
"OMP_1.0");
1435 xversionify(FTN_TEST_NEST_LOCK, 10,
"OMP_1.0");
1438 xversionify(FTN_GET_WTICK, 20,
"OMP_2.0");
1439 xversionify(FTN_GET_WTIME, 20,
"OMP_2.0");
1442 xversionify(FTN_SET_SCHEDULE, 30,
"OMP_3.0");
1443 xversionify(FTN_GET_SCHEDULE, 30,
"OMP_3.0");
1444 xversionify(FTN_GET_THREAD_LIMIT, 30,
"OMP_3.0");
1445 xversionify(FTN_SET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1446 xversionify(FTN_GET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1447 xversionify(FTN_GET_ANCESTOR_THREAD_NUM, 30,
"OMP_3.0");
1448 xversionify(FTN_GET_LEVEL, 30,
"OMP_3.0");
1449 xversionify(FTN_GET_TEAM_SIZE, 30,
"OMP_3.0");
1450 xversionify(FTN_GET_ACTIVE_LEVEL, 30,
"OMP_3.0");
1453 xversionify(FTN_INIT_LOCK, 30,
"OMP_3.0");
1454 xversionify(FTN_INIT_NEST_LOCK, 30,
"OMP_3.0");
1455 xversionify(FTN_DESTROY_LOCK, 30,
"OMP_3.0");
1456 xversionify(FTN_DESTROY_NEST_LOCK, 30,
"OMP_3.0");
1457 xversionify(FTN_SET_LOCK, 30,
"OMP_3.0");
1458 xversionify(FTN_SET_NEST_LOCK, 30,
"OMP_3.0");
1459 xversionify(FTN_UNSET_LOCK, 30,
"OMP_3.0");
1460 xversionify(FTN_UNSET_NEST_LOCK, 30,
"OMP_3.0");
1461 xversionify(FTN_TEST_LOCK, 30,
"OMP_3.0");
1462 xversionify(FTN_TEST_NEST_LOCK, 30,
"OMP_3.0");
1465 xversionify(FTN_IN_FINAL, 31,
"OMP_3.1");
1469 xversionify(FTN_GET_PROC_BIND, 40,
"OMP_4.0");
1470 xversionify(FTN_GET_NUM_TEAMS, 40,
"OMP_4.0");
1471 xversionify(FTN_GET_TEAM_NUM, 40,
"OMP_4.0");
1472 xversionify(FTN_GET_CANCELLATION, 40,
"OMP_4.0");
1473 xversionify(FTN_GET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1474 xversionify(FTN_SET_DEFAULT_DEVICE, 40,
"OMP_4.0");
1475 xversionify(FTN_IS_INITIAL_DEVICE, 40,
"OMP_4.0");
1486 #endif // KMP_USE_VERSION_SYMBOLS 1490 #endif // __cplusplus KMP_EXPORT kmp_int32 __kmpc_bound_num_threads(ident_t *)