Changeset View
Changeset View
Standalone View
Standalone View
openmp/trunk/runtime/src/kmp_ftn_entry.h
Show First 20 Lines • Show All 273 Lines • ▼ Show 20 Lines | |||||
FTN_CREATE_AFFINITY_MASK( void **mask ) | FTN_CREATE_AFFINITY_MASK( void **mask ) | ||||
{ | { | ||||
#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | ||||
*mask = NULL; | *mask = NULL; | ||||
#else | #else | ||||
// | // | ||||
// We really only NEED serial initialization here. | // We really only NEED serial initialization here. | ||||
// | // | ||||
kmp_affin_mask_t* mask_internals; | |||||
if ( ! TCR_4(__kmp_init_middle) ) { | if ( ! TCR_4(__kmp_init_middle) ) { | ||||
__kmp_middle_initialize(); | __kmp_middle_initialize(); | ||||
} | } | ||||
# if KMP_USE_HWLOC | mask_internals = __kmp_affinity_dispatch->allocate_mask(); | ||||
*mask = (hwloc_cpuset_t)hwloc_bitmap_alloc(); | KMP_CPU_ZERO( mask_internals ); | ||||
# else | *mask = mask_internals; | ||||
*mask = kmpc_malloc( __kmp_affin_mask_size ); | |||||
# endif | |||||
KMP_CPU_ZERO( (kmp_affin_mask_t *)(*mask) ); | |||||
#endif | #endif | ||||
} | } | ||||
void FTN_STDCALL | void FTN_STDCALL | ||||
FTN_DESTROY_AFFINITY_MASK( void **mask ) | FTN_DESTROY_AFFINITY_MASK( void **mask ) | ||||
{ | { | ||||
#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | ||||
// Nothing | // Nothing | ||||
#else | #else | ||||
// | // | ||||
// We really only NEED serial initialization here. | // We really only NEED serial initialization here. | ||||
// | // | ||||
kmp_affin_mask_t* mask_internals; | |||||
if ( ! TCR_4(__kmp_init_middle) ) { | if ( ! TCR_4(__kmp_init_middle) ) { | ||||
__kmp_middle_initialize(); | __kmp_middle_initialize(); | ||||
} | } | ||||
if ( __kmp_env_consistency_check ) { | if ( __kmp_env_consistency_check ) { | ||||
if ( *mask == NULL ) { | if ( *mask == NULL ) { | ||||
KMP_FATAL( AffinityInvalidMask, "kmp_destroy_affinity_mask" ); | KMP_FATAL( AffinityInvalidMask, "kmp_destroy_affinity_mask" ); | ||||
} | } | ||||
} | } | ||||
# if KMP_USE_HWLOC | mask_internals = (kmp_affin_mask_t*)(*mask); | ||||
hwloc_bitmap_free((hwloc_cpuset_t)(*mask)); | __kmp_affinity_dispatch->deallocate_mask(mask_internals); | ||||
# else | |||||
kmpc_free( *mask ); | |||||
# endif | |||||
*mask = NULL; | *mask = NULL; | ||||
#endif | #endif | ||||
} | } | ||||
int FTN_STDCALL | int FTN_STDCALL | ||||
FTN_SET_AFFINITY_MASK_PROC( int KMP_DEREF proc, void **mask ) | FTN_SET_AFFINITY_MASK_PROC( int KMP_DEREF proc, void **mask ) | ||||
{ | { | ||||
#if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | #if defined(KMP_STUB) || !KMP_AFFINITY_SUPPORTED | ||||
▲ Show 20 Lines • Show All 1,173 Lines • Show Last 20 Lines |