38 # error The support file kmp_ftn_entry.h should not be compiled by itself.
61 #ifdef KMP_GOMP_COMPAT
62 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_UPPER)
63 # define PASS_ARGS_BY_VALUE 1
67 # if (KMP_FTN_ENTRIES == KMP_FTN_PLAIN) || (KMP_FTN_ENTRIES == KMP_FTN_APPEND)
68 # define PASS_ARGS_BY_VALUE 1
73 #ifdef PASS_ARGS_BY_VALUE
80 FTN_SET_STACKSIZE(
int KMP_DEREF arg )
83 __kmps_set_stacksize( KMP_DEREF arg );
86 __kmp_aux_set_stacksize( (
size_t) KMP_DEREF arg );
91 FTN_SET_STACKSIZE_S(
size_t KMP_DEREF arg )
94 __kmps_set_stacksize( KMP_DEREF arg );
97 __kmp_aux_set_stacksize( KMP_DEREF arg );
102 FTN_GET_STACKSIZE(
void )
105 return __kmps_get_stacksize();
107 if ( ! __kmp_init_serial ) {
108 __kmp_serial_initialize();
110 return (
int)__kmp_stksize;
115 FTN_GET_STACKSIZE_S(
void )
118 return __kmps_get_stacksize();
120 if ( ! __kmp_init_serial ) {
121 __kmp_serial_initialize();
123 return __kmp_stksize;
128 FTN_SET_BLOCKTIME(
int KMP_DEREF arg )
131 __kmps_set_blocktime( KMP_DEREF arg );
136 gtid = __kmp_entry_gtid();
137 tid = __kmp_tid_from_gtid(gtid);
138 thread = __kmp_thread_from_gtid(gtid);
140 __kmp_aux_set_blocktime( KMP_DEREF arg, thread, tid );
145 FTN_GET_BLOCKTIME(
void )
148 return __kmps_get_blocktime();
154 gtid = __kmp_entry_gtid();
155 tid = __kmp_tid_from_gtid(gtid);
156 thread = __kmp_thread_from_gtid(gtid);
157 team = __kmp_threads[ gtid ] -> th.th_team;
160 if ( __kmp_dflt_blocktime == KMP_MAX_BLOCKTIME ) {
161 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
162 gtid, team->t.t_id, tid, KMP_MAX_BLOCKTIME) );
163 return KMP_MAX_BLOCKTIME;
165 #ifdef KMP_ADJUST_BLOCKTIME
166 else if ( __kmp_zero_bt && !get__bt_set( team, tid ) ) {
167 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
168 gtid, team->t.t_id, tid, 0) );
173 KF_TRACE(10, (
"kmp_get_blocktime: T#%d(%d:%d), blocktime=%d\n",
174 gtid, team->t.t_id, tid, get__blocktime( team, tid ) ) );
175 return get__blocktime( team, tid );
181 FTN_SET_LIBRARY_SERIAL(
void )
184 __kmps_set_library( library_serial );
187 __kmp_user_set_library( library_serial );
192 FTN_SET_LIBRARY_TURNAROUND(
void )
195 __kmps_set_library( library_turnaround );
198 __kmp_user_set_library( library_turnaround );
203 FTN_SET_LIBRARY_THROUGHPUT(
void )
206 __kmps_set_library( library_throughput );
209 __kmp_user_set_library( library_throughput );
214 FTN_SET_LIBRARY(
int KMP_DEREF arg )
217 __kmps_set_library( KMP_DEREF arg );
219 enum library_type lib;
220 lib = (
enum library_type) KMP_DEREF arg;
222 __kmp_user_set_library( lib );
227 FTN_GET_LIBRARY (
void)
230 return __kmps_get_library();
232 if ( ! __kmp_init_serial ) {
233 __kmp_serial_initialize();
235 return ((
int) __kmp_library);
242 FTN_SET_AFFINITY(
void **mask )
244 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
247 if ( ! TCR_4(__kmp_init_middle) ) {
248 __kmp_middle_initialize();
250 return __kmp_aux_set_affinity( mask );
255 FTN_GET_AFFINITY(
void **mask )
257 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
260 if ( ! TCR_4(__kmp_init_middle) ) {
261 __kmp_middle_initialize();
263 return __kmp_aux_get_affinity( mask );
268 FTN_GET_AFFINITY_MAX_PROC(
void )
270 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
276 if ( ! TCR_4(__kmp_init_middle) ) {
277 __kmp_middle_initialize();
279 if ( ! ( KMP_AFFINITY_CAPABLE() ) ) {
283 #if KMP_OS_WINDOWS && KMP_ARCH_X86_64
284 if ( __kmp_num_proc_groups <= 1 ) {
285 return KMP_CPU_SETSIZE;
293 FTN_CREATE_AFFINITY_MASK(
void **mask )
295 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
301 if ( ! TCR_4(__kmp_init_middle) ) {
302 __kmp_middle_initialize();
304 *mask = kmpc_malloc( __kmp_affin_mask_size );
305 KMP_CPU_ZERO( (kmp_affin_mask_t *)(*mask) );
310 FTN_DESTROY_AFFINITY_MASK(
void **mask )
312 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
318 if ( ! TCR_4(__kmp_init_middle) ) {
319 __kmp_middle_initialize();
321 if ( __kmp_env_consistency_check ) {
322 if ( *mask == NULL ) {
323 KMP_FATAL( AffinityInvalidMask,
"kmp_destroy_affinity_mask" );
332 FTN_SET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
334 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
337 if ( ! TCR_4(__kmp_init_middle) ) {
338 __kmp_middle_initialize();
340 return __kmp_aux_set_affinity_mask_proc( KMP_DEREF proc, mask );
345 FTN_UNSET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
347 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
350 if ( ! TCR_4(__kmp_init_middle) ) {
351 __kmp_middle_initialize();
353 return __kmp_aux_unset_affinity_mask_proc( KMP_DEREF proc, mask );
358 FTN_GET_AFFINITY_MASK_PROC(
int KMP_DEREF proc,
void **mask )
360 #if defined(KMP_STUB) || !(KMP_OS_WINDOWS || KMP_OS_LINUX)
363 if ( ! TCR_4(__kmp_init_middle) ) {
364 __kmp_middle_initialize();
366 return __kmp_aux_get_affinity_mask_proc( KMP_DEREF proc, mask );
378 xexpand(FTN_SET_NUM_THREADS)(
int KMP_DEREF arg )
383 __kmp_set_num_threads( KMP_DEREF arg, __kmp_entry_gtid() );
390 xexpand(FTN_GET_NUM_THREADS)( void )
401 xexpand(FTN_GET_MAX_THREADS)( void )
408 if ( ! TCR_4(__kmp_init_middle) ) {
409 __kmp_middle_initialize();
411 gtid = __kmp_entry_gtid();
412 thread = __kmp_threads[ gtid ];
415 return thread -> th.th_current_task -> td_icvs.nproc;
417 return thread -> th.th_team -> t.t_set_nproc[ thread->th.th_info.ds.ds_tid ];
423 xexpand(FTN_GET_THREAD_NUM)( void )
431 gtid = __kmp_entry_gtid();
433 if (!__kmp_init_parallel ||
434 (gtid = ((kmp_intptr_t)TlsGetValue( __kmp_gtid_threadprivate_key ))) == 0) {
441 #ifdef KMP_TDATA_GTID
442 if ( __kmp_gtid_mode >= 3 ) {
443 if ((gtid = __kmp_gtid) == KMP_GTID_DNE) {
448 if (!__kmp_init_parallel ||
449 (gtid = (kmp_intptr_t)(pthread_getspecific( __kmp_gtid_threadprivate_key ))) == 0) {
453 #ifdef KMP_TDATA_GTID
457 #error Unknown or unsupported OS
460 return __kmp_tid_from_gtid( gtid );
465 FTN_GET_NUM_KNOWN_THREADS(
void )
470 if ( ! __kmp_init_serial ) {
471 __kmp_serial_initialize();
475 return TCR_4(__kmp_nth);
480 xexpand(FTN_GET_NUM_PROCS)( void )
486 if ( ! TCR_4(__kmp_init_middle) ) {
487 __kmp_middle_initialize();
489 return __kmp_avail_proc;
494 xexpand(FTN_SET_NESTED)(
int KMP_DEREF flag )
497 __kmps_set_nested( KMP_DEREF flag );
501 thread = __kmp_entry_thread();
502 __kmp_save_internal_controls( thread );
503 set__nested( thread, ( (KMP_DEREF flag) ? TRUE : FALSE ) );
509 xexpand(FTN_GET_NESTED)( void )
512 return __kmps_get_nested();
515 thread = __kmp_entry_thread();
516 return get__nested( thread );
521 xexpand(FTN_SET_DYNAMIC)(
int KMP_DEREF flag )
524 __kmps_set_dynamic( KMP_DEREF flag ? TRUE : FALSE );
528 thread = __kmp_entry_thread();
530 __kmp_save_internal_controls( thread );
531 set__dynamic( thread, KMP_DEREF flag ? TRUE : FALSE );
537 xexpand(FTN_GET_DYNAMIC)( void )
540 return __kmps_get_dynamic();
543 thread = __kmp_entry_thread();
544 return get__dynamic( thread );
549 xexpand(FTN_IN_PARALLEL)( void )
554 kmp_info_t *th = __kmp_entry_thread();
556 if ( th->th.th_team_microtask ) {
561 return ( th->th.th_team->t.t_active_level ? 1 : 0 );
565 return ( th->th.th_root->r.r_in_parallel ? FTN_TRUE : FTN_FALSE );
572 xexpand(FTN_SET_SCHEDULE)( kmp_sched_t KMP_DEREF kind,
int KMP_DEREF modifier )
575 __kmps_set_schedule( KMP_DEREF kind, KMP_DEREF modifier );
579 __kmp_set_schedule( __kmp_entry_gtid(), KMP_DEREF kind, KMP_DEREF modifier );
584 xexpand(FTN_GET_SCHEDULE)( kmp_sched_t * kind,
int * modifier )
587 __kmps_get_schedule( kind, modifier );
591 __kmp_get_schedule( __kmp_entry_gtid(), kind, modifier );
596 xexpand(FTN_SET_MAX_ACTIVE_LEVELS)(
int KMP_DEREF arg )
603 __kmp_set_max_active_levels( __kmp_entry_gtid(), KMP_DEREF arg );
608 xexpand(FTN_GET_MAX_ACTIVE_LEVELS)( void )
615 return __kmp_get_max_active_levels( __kmp_entry_gtid() );
620 xexpand(FTN_GET_ACTIVE_LEVEL)( void )
627 return __kmp_entry_thread() -> th.th_team -> t.t_active_level;
632 xexpand(FTN_GET_LEVEL)( void )
639 return __kmp_entry_thread() -> th.th_team -> t.t_level;
644 xexpand(FTN_GET_ANCESTOR_THREAD_NUM)(
int KMP_DEREF level )
647 return ( KMP_DEREF level ) ? ( -1 ) : ( 0 );
649 return __kmp_get_ancestor_thread_num( __kmp_entry_gtid(), KMP_DEREF level );
654 xexpand(FTN_GET_TEAM_SIZE)(
int KMP_DEREF level )
657 return ( KMP_DEREF level ) ? ( -1 ) : ( 1 );
659 return __kmp_get_team_size( __kmp_entry_gtid(), KMP_DEREF level );
664 xexpand(FTN_GET_THREAD_LIMIT)( void )
669 if ( ! __kmp_init_serial ) {
670 __kmp_serial_initialize();
673 return __kmp_max_nth;
678 xexpand(FTN_IN_FINAL)( void )
683 if ( ! TCR_4(__kmp_init_parallel) ) {
686 return __kmp_entry_thread() -> th.th_current_task -> td_flags.final;
690 #endif // OMP_30_ENABLED
695 kmp_proc_bind_t FTN_STDCALL
696 xexpand(FTN_GET_PROC_BIND)( void )
699 return __kmps_get_proc_bind();
701 return get__proc_bind( __kmp_entry_thread() );
706 xexpand(FTN_GET_NUM_TEAMS)( void )
711 kmp_info_t *thr = __kmp_entry_thread();
712 if ( thr->th.th_team_microtask ) {
713 kmp_team_t *team = thr->th.th_team;
714 int tlevel = thr->th.th_teams_level;
715 int ii = team->t.t_level;
716 int dd = team -> t.t_serialized;
717 int level = tlevel + 1;
718 KMP_DEBUG_ASSERT( ii >= tlevel );
721 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
724 if( team -> t.t_serialized && ( !dd ) ) {
725 team = team->t.t_parent;
729 team = team->t.t_parent;
736 return team->t.t_parent->t.t_nproc;
745 xexpand(FTN_GET_TEAM_NUM)( void )
750 kmp_info_t *thr = __kmp_entry_thread();
751 if ( thr->th.th_team_microtask ) {
752 kmp_team_t *team = thr->th.th_team;
753 int tlevel = thr->th.th_teams_level;
754 int ii = team->t.t_level;
755 int dd = team -> t.t_serialized;
756 int level = tlevel + 1;
757 KMP_DEBUG_ASSERT( ii >= tlevel );
760 for( dd = team -> t.t_serialized; ( dd > 0 ) && ( ii > level ); dd--, ii-- )
763 if( team -> t.t_serialized && ( !dd ) ) {
764 team = team->t.t_parent;
768 team = team->t.t_parent;
775 return team->t.t_master_tid;
783 #if KMP_MIC || KMP_OS_DARWIN
785 static int __kmp_default_device = 0;
788 FTN_GET_DEFAULT_DEVICE(
void )
790 return __kmp_default_device;
794 FTN_SET_DEFAULT_DEVICE(
int KMP_DEREF arg )
796 __kmp_default_device = KMP_DEREF arg;
800 FTN_GET_NUM_DEVICES(
void )
805 #endif // KMP_MIC || KMP_OS_DARWIN
807 #endif // OMP_40_ENABLED
810 typedef enum { UNINIT = -1, UNLOCKED, LOCKED } kmp_stub_lock_t;
815 xexpand(FTN_INIT_LOCK)(
void **user_lock )
818 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
820 __kmpc_init_lock( NULL, __kmp_entry_gtid(), user_lock );
826 xexpand(FTN_INIT_NEST_LOCK)(
void **user_lock )
829 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
831 __kmpc_init_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
836 xexpand(FTN_DESTROY_LOCK)(
void **user_lock )
839 *((kmp_stub_lock_t *)user_lock) = UNINIT;
841 __kmpc_destroy_lock( NULL, __kmp_entry_gtid(), user_lock );
846 xexpand(FTN_DESTROY_NEST_LOCK)(
void **user_lock )
849 *((kmp_stub_lock_t *)user_lock) = UNINIT;
851 __kmpc_destroy_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
856 xexpand(FTN_SET_LOCK)(
void **user_lock )
859 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
862 if ( *((kmp_stub_lock_t *)user_lock) != UNLOCKED ) {
865 *((kmp_stub_lock_t *)user_lock) = LOCKED;
867 __kmpc_set_lock( NULL, __kmp_entry_gtid(), user_lock );
872 xexpand(FTN_SET_NEST_LOCK)(
void **user_lock )
875 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
878 (*((
int *)user_lock))++;
880 __kmpc_set_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
885 xexpand(FTN_UNSET_LOCK)(
void **user_lock )
888 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
891 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
894 *((kmp_stub_lock_t *)user_lock) = UNLOCKED;
896 __kmpc_unset_lock( NULL, __kmp_entry_gtid(), user_lock );
901 xexpand(FTN_UNSET_NEST_LOCK)(
void **user_lock )
904 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
907 if ( *((kmp_stub_lock_t *)user_lock) == UNLOCKED ) {
910 (*((
int *)user_lock))--;
912 __kmpc_unset_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
917 xexpand(FTN_TEST_LOCK)(
void **user_lock )
920 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
923 if ( *((kmp_stub_lock_t *)user_lock) == LOCKED ) {
926 *((kmp_stub_lock_t *)user_lock) = LOCKED;
929 return __kmpc_test_lock( NULL, __kmp_entry_gtid(), user_lock );
934 xexpand(FTN_TEST_NEST_LOCK)(
void **user_lock )
937 if ( *((kmp_stub_lock_t *)user_lock) == UNINIT ) {
940 return ++(*((
int *)user_lock));
942 return __kmpc_test_nest_lock( NULL, __kmp_entry_gtid(), user_lock );
947 xexpand(FTN_GET_WTIME)( void )
950 return __kmps_get_wtime();
956 if ( ! __kmp_init_serial ) {
957 __kmp_serial_initialize();
960 __kmp_elapsed( & data );
966 xexpand(FTN_GET_WTICK)( void )
969 return __kmps_get_wtick();
972 if ( ! __kmp_init_serial ) {
973 __kmp_serial_initialize();
975 __kmp_elapsed_tick( & data );
983 FTN_MALLOC(
size_t KMP_DEREF size )
986 return kmpc_malloc( KMP_DEREF size );
990 FTN_CALLOC(
size_t KMP_DEREF nelem,
size_t KMP_DEREF elsize )
993 return kmpc_calloc( KMP_DEREF nelem, KMP_DEREF elsize );
997 FTN_REALLOC(
void * KMP_DEREF ptr,
size_t KMP_DEREF size )
1000 return kmpc_realloc( KMP_DEREF ptr, KMP_DEREF size );
1004 FTN_FREE(
void * KMP_DEREF ptr )
1007 kmpc_free( KMP_DEREF ptr );
1011 FTN_SET_WARNINGS_ON(
void )
1014 __kmp_generate_warnings = kmp_warnings_explicit;
1019 FTN_SET_WARNINGS_OFF(
void )
1022 __kmp_generate_warnings = FALSE;
1027 FTN_SET_DEFAULTS(
char const * str
1028 #ifndef PASS_ARGS_BY_VALUE
1034 #ifdef PASS_ARGS_BY_VALUE
1035 int len = strlen( str );
1037 __kmp_aux_set_defaults( str, len );
1047 xexpand(FTN_GET_CANCELLATION)(void) {
1052 if ( ! __kmp_init_serial ) {
1053 __kmp_serial_initialize();
1055 return __kmp_omp_cancellation;
1060 FTN_GET_CANCELLATION_STATUS(
int cancel_kind) {
1064 return __kmp_get_cancellation_status(cancel_kind);
1068 #endif // OMP_40_ENABLED
1090 xaliasify(FTN_SET_NUM_THREADS, 10);
1091 xaliasify(FTN_GET_NUM_THREADS, 10);
1092 xaliasify(FTN_GET_MAX_THREADS, 10);
1093 xaliasify(FTN_GET_THREAD_NUM, 10);
1094 xaliasify(FTN_GET_NUM_PROCS, 10);
1095 xaliasify(FTN_IN_PARALLEL, 10);
1096 xaliasify(FTN_SET_DYNAMIC, 10);
1097 xaliasify(FTN_GET_DYNAMIC, 10);
1098 xaliasify(FTN_SET_NESTED, 10);
1099 xaliasify(FTN_GET_NESTED, 10);
1100 xaliasify(FTN_INIT_LOCK, 10);
1101 xaliasify(FTN_INIT_NEST_LOCK, 10);
1102 xaliasify(FTN_DESTROY_LOCK, 10);
1103 xaliasify(FTN_DESTROY_NEST_LOCK, 10);
1104 xaliasify(FTN_SET_LOCK, 10);
1105 xaliasify(FTN_SET_NEST_LOCK, 10);
1106 xaliasify(FTN_UNSET_LOCK, 10);
1107 xaliasify(FTN_UNSET_NEST_LOCK, 10);
1108 xaliasify(FTN_TEST_LOCK, 10);
1109 xaliasify(FTN_TEST_NEST_LOCK, 10);
1112 xaliasify(FTN_GET_WTICK, 20);
1113 xaliasify(FTN_GET_WTIME, 20);
1117 xaliasify(FTN_SET_SCHEDULE, 30);
1118 xaliasify(FTN_GET_SCHEDULE, 30);
1119 xaliasify(FTN_GET_THREAD_LIMIT, 30);
1120 xaliasify(FTN_SET_MAX_ACTIVE_LEVELS, 30);
1121 xaliasify(FTN_GET_MAX_ACTIVE_LEVELS, 30);
1122 xaliasify(FTN_GET_LEVEL, 30);
1123 xaliasify(FTN_GET_ANCESTOR_THREAD_NUM, 30);
1124 xaliasify(FTN_GET_TEAM_SIZE, 30);
1125 xaliasify(FTN_GET_ACTIVE_LEVEL, 30);
1126 xaliasify(FTN_INIT_LOCK, 30);
1127 xaliasify(FTN_INIT_NEST_LOCK, 30);
1128 xaliasify(FTN_DESTROY_LOCK, 30);
1129 xaliasify(FTN_DESTROY_NEST_LOCK, 30);
1130 xaliasify(FTN_SET_LOCK, 30);
1131 xaliasify(FTN_SET_NEST_LOCK, 30);
1132 xaliasify(FTN_UNSET_LOCK, 30);
1133 xaliasify(FTN_UNSET_NEST_LOCK, 30);
1134 xaliasify(FTN_TEST_LOCK, 30);
1135 xaliasify(FTN_TEST_NEST_LOCK, 30);
1138 xaliasify(FTN_IN_FINAL, 31);
1143 xaliasify(FTN_GET_PROC_BIND, 40);
1144 xaliasify(FTN_GET_NUM_TEAMS, 40);
1145 xaliasify(FTN_GET_TEAM_NUM, 40);
1146 xaliasify(FTN_GET_CANCELLATION, 40);
1158 xversionify(FTN_SET_NUM_THREADS, 10,
"OMP_1.0");
1159 xversionify(FTN_GET_NUM_THREADS, 10,
"OMP_1.0");
1160 xversionify(FTN_GET_MAX_THREADS, 10,
"OMP_1.0");
1161 xversionify(FTN_GET_THREAD_NUM, 10,
"OMP_1.0");
1162 xversionify(FTN_GET_NUM_PROCS, 10,
"OMP_1.0");
1163 xversionify(FTN_IN_PARALLEL, 10,
"OMP_1.0");
1164 xversionify(FTN_SET_DYNAMIC, 10,
"OMP_1.0");
1165 xversionify(FTN_GET_DYNAMIC, 10,
"OMP_1.0");
1166 xversionify(FTN_SET_NESTED, 10,
"OMP_1.0");
1167 xversionify(FTN_GET_NESTED, 10,
"OMP_1.0");
1168 xversionify(FTN_INIT_LOCK, 10,
"OMP_1.0");
1169 xversionify(FTN_INIT_NEST_LOCK, 10,
"OMP_1.0");
1170 xversionify(FTN_DESTROY_LOCK, 10,
"OMP_1.0");
1171 xversionify(FTN_DESTROY_NEST_LOCK, 10,
"OMP_1.0");
1172 xversionify(FTN_SET_LOCK, 10,
"OMP_1.0");
1173 xversionify(FTN_SET_NEST_LOCK, 10,
"OMP_1.0");
1174 xversionify(FTN_UNSET_LOCK, 10,
"OMP_1.0");
1175 xversionify(FTN_UNSET_NEST_LOCK, 10,
"OMP_1.0");
1176 xversionify(FTN_TEST_LOCK, 10,
"OMP_1.0");
1177 xversionify(FTN_TEST_NEST_LOCK, 10,
"OMP_1.0");
1180 xversionify(FTN_GET_WTICK, 20,
"OMP_2.0");
1181 xversionify(FTN_GET_WTIME, 20,
"OMP_2.0");
1185 xversionify(FTN_SET_SCHEDULE, 30,
"OMP_3.0");
1186 xversionify(FTN_GET_SCHEDULE, 30,
"OMP_3.0");
1187 xversionify(FTN_GET_THREAD_LIMIT, 30,
"OMP_3.0");
1188 xversionify(FTN_SET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1189 xversionify(FTN_GET_MAX_ACTIVE_LEVELS, 30,
"OMP_3.0");
1190 xversionify(FTN_GET_ANCESTOR_THREAD_NUM, 30,
"OMP_3.0");
1191 xversionify(FTN_GET_LEVEL, 30,
"OMP_3.0");
1192 xversionify(FTN_GET_TEAM_SIZE, 30,
"OMP_3.0");
1193 xversionify(FTN_GET_ACTIVE_LEVEL, 30,
"OMP_3.0");
1196 xversionify(FTN_INIT_LOCK, 30,
"OMP_3.0");
1197 xversionify(FTN_INIT_NEST_LOCK, 30,
"OMP_3.0");
1198 xversionify(FTN_DESTROY_LOCK, 30,
"OMP_3.0");
1199 xversionify(FTN_DESTROY_NEST_LOCK, 30,
"OMP_3.0");
1200 xversionify(FTN_SET_LOCK, 30,
"OMP_3.0");
1201 xversionify(FTN_SET_NEST_LOCK, 30,
"OMP_3.0");
1202 xversionify(FTN_UNSET_LOCK, 30,
"OMP_3.0");
1203 xversionify(FTN_UNSET_NEST_LOCK, 30,
"OMP_3.0");
1204 xversionify(FTN_TEST_LOCK, 30,
"OMP_3.0");
1205 xversionify(FTN_TEST_NEST_LOCK, 30,
"OMP_3.0");
1208 xversionify(FTN_IN_FINAL, 31,
"OMP_3.1");
1213 xversionify(FTN_GET_PROC_BIND, 40,
"OMP_4.0");
1214 xversionify(FTN_GET_NUM_TEAMS, 40,
"OMP_4.0");
1215 xversionify(FTN_GET_TEAM_NUM, 40,
"OMP_4.0");
1216 xversionify(FTN_GET_CANCELLATION, 40,
"OMP_4.0");
1231 #endif // __cplusplus
KMP_EXPORT kmp_int32 __kmpc_bound_num_threads(ident_t *)