17 #if !defined(__TBB_machine_H) || defined(__TBB_machine_macos_common_H) 18 #error Do not #include this internal file directly; use public TBB headers instead. 21 #define __TBB_machine_macos_common_H 24 #define __TBB_Yield() sched_yield() 28 #include <sys/types.h> 29 #include <sys/sysctl.h> 32 int name[2] = {CTL_HW, HW_AVAILCPU};
34 size_t size =
sizeof(ncpu);
35 sysctl(
name, 2, &ncpu, &
size, NULL, 0 );
39 #define __TBB_HardwareConcurrency() __TBB_macos_available_cpu() 41 #ifndef __TBB_full_memory_fence 44 #define __TBB_UnknownArchitecture 1 47 #if __TBB_UnknownArchitecture 49 #include <libkern/OSAtomic.h> 54 int64_t*
address = (int64_t*)ptr;
55 while( !OSAtomicCompareAndSwap64Barrier(comparand,
value,
address) ){
59 int64_t snapshot = OSAtomicAdd64( 0,
address );
61 if( snapshot!=comparand )
return snapshot;
66 #define __TBB_machine_cmpswp8 __TBB_machine_cmpswp8_OsX 70 #if __TBB_UnknownArchitecture 72 #ifndef __TBB_WORDSIZE 73 #define __TBB_WORDSIZE __SIZEOF_POINTER__ 76 #ifdef __TBB_ENDIANNESS 79 #define __TBB_ENDIANNESS __TBB_ENDIAN_BIG 80 #elif __LITTLE_ENDIAN__ 81 #define __TBB_ENDIANNESS __TBB_ENDIAN_LITTLE 83 #define __TBB_ENDIANNESS __TBB_ENDIAN_UNSUPPORTED 91 #define __TBB_control_consistency_helper() OSMemoryBarrier() 92 #define __TBB_acquire_consistency_helper() OSMemoryBarrier() 93 #define __TBB_release_consistency_helper() OSMemoryBarrier() 94 #define __TBB_full_memory_fence() OSMemoryBarrier() 99 int32_t*
address = (int32_t*)ptr;
100 while( !OSAtomicCompareAndSwap32Barrier(comparand,
value,
address) ){
102 if( snapshot!=comparand )
return snapshot;
110 return OSAtomicAdd32Barrier(addend, (int32_t*)ptr) - addend;
116 return OSAtomicAdd64Barrier(addend, (int64_t*)ptr) - addend;
119 #define __TBB_USE_GENERIC_PART_WORD_CAS 1 120 #define __TBB_USE_GENERIC_PART_WORD_FETCH_ADD 1 121 #define __TBB_USE_GENERIC_FETCH_STORE 1 122 #define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 123 #define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 124 #if __TBB_WORDSIZE == 4 125 #define __TBB_USE_GENERIC_DWORD_LOAD_STORE 1 127 #define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 static int __TBB_macos_available_cpu()
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t size
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
static int64_t __TBB_machine_cmpswp8_OsX(volatile void *ptr, int64_t value, int64_t comparand)
static int64_t __TBB_machine_fetchadd8(volatile void *ptr, int64_t addend)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void * address
void const char const char int ITT_FORMAT __itt_group_sync x void const char * name
static int32_t __TBB_machine_fetchadd4(volatile void *ptr, int32_t addend)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
static int32_t __TBB_machine_cmpswp4(volatile void *ptr, int32_t value, int32_t comparand)
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value