#include <sched.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <libkern/OSAtomic.h>
Go to the source code of this file.
◆ __TBB_acquire_consistency_helper
#define __TBB_acquire_consistency_helper |
( |
| ) |
OSMemoryBarrier() |
◆ __TBB_control_consistency_helper
#define __TBB_control_consistency_helper |
( |
| ) |
OSMemoryBarrier() |
As this generic implementation has absolutely no information about underlying hardware, its performance most likely will be sub-optimal because of full memory fence usages where a more lightweight synchronization means (or none at all) could suffice. Thus if you use this header to enable TBB on a new platform, consider forking it and relaxing below helpers as appropriate.
Definition at line 91 of file macos_common.h.
◆ __TBB_ENDIANNESS
◆ __TBB_full_memory_fence
#define __TBB_full_memory_fence |
( |
| ) |
OSMemoryBarrier() |
◆ __TBB_HardwareConcurrency
◆ __TBB_machine_cmpswp8
◆ __TBB_release_consistency_helper
#define __TBB_release_consistency_helper |
( |
| ) |
OSMemoryBarrier() |
◆ __TBB_UnknownArchitecture
#define __TBB_UnknownArchitecture 1 |
◆ __TBB_USE_GENERIC_FETCH_STORE
#define __TBB_USE_GENERIC_FETCH_STORE 1 |
◆ __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE
#define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 |
◆ __TBB_USE_GENERIC_PART_WORD_CAS
#define __TBB_USE_GENERIC_PART_WORD_CAS 1 |
◆ __TBB_USE_GENERIC_PART_WORD_FETCH_ADD
#define __TBB_USE_GENERIC_PART_WORD_FETCH_ADD 1 |
◆ __TBB_USE_GENERIC_RELAXED_LOAD_STORE
#define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 |
◆ __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE
#define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 |
◆ __TBB_WORDSIZE
#define __TBB_WORDSIZE __SIZEOF_POINTER__ |
◆ __TBB_Yield
#define __TBB_Yield |
( |
| ) |
sched_yield() |
◆ __TBB_machine_cmpswp4()
static int32_t __TBB_machine_cmpswp4 |
( |
volatile void * |
ptr, |
|
|
int32_t |
value, |
|
|
int32_t |
comparand |
|
) |
| |
|
inlinestatic |
Definition at line 96 of file macos_common.h.
99 int32_t*
address = (int32_t*)ptr;
100 while( !OSAtomicCompareAndSwap32Barrier(comparand,
value,
address) ){
102 if( snapshot!=comparand )
return snapshot;
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
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
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
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
References __TBB_ASSERT, address, tbb::internal::is_aligned(), and value.
◆ __TBB_machine_cmpswp8_OsX()
static int64_t __TBB_machine_cmpswp8_OsX |
( |
volatile void * |
ptr, |
|
|
int64_t |
value, |
|
|
int64_t |
comparand |
|
) |
| |
|
inlinestatic |
Definition at line 51 of file macos_common.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;
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
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
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
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
References __TBB_ASSERT, address, tbb::internal::is_aligned(), and value.
◆ __TBB_machine_fetchadd4()
static int32_t __TBB_machine_fetchadd4 |
( |
volatile void * |
ptr, |
|
|
int32_t |
addend |
|
) |
| |
|
inlinestatic |
Definition at line 107 of file macos_common.h.
110 return OSAtomicAdd32Barrier(addend, (int32_t*)ptr) - addend;
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
References __TBB_ASSERT, and tbb::internal::is_aligned().
◆ __TBB_machine_fetchadd8()
static int64_t __TBB_machine_fetchadd8 |
( |
volatile void * |
ptr, |
|
|
int64_t |
addend |
|
) |
| |
|
inlinestatic |
Definition at line 113 of file macos_common.h.
116 return OSAtomicAdd64Barrier(addend, (int64_t*)ptr) - addend;
bool is_aligned(T *pointer, uintptr_t alignment)
A function to check if passed in pointer is aligned on a specific border.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
References __TBB_ASSERT, and tbb::internal::is_aligned().
◆ __TBB_macos_available_cpu()
static int __TBB_macos_available_cpu |
( |
| ) |
|
|
inlinestatic |
Definition at line 31 of file macos_common.h.
32 int name[2] = {CTL_HW, HW_AVAILCPU};
34 size_t size =
sizeof(ncpu);
35 sysctl(
name, 2, &ncpu, &
size, NULL, 0 );
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
void const char const char int ITT_FORMAT __itt_group_sync x void const char * name
References name, and size.