Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
#include <stdint.h>
#include <unistd.h>
Go to the source code of this file.
Namespaces | |
tbb | |
The graph class. | |
tbb::internal | |
Identifiers declared inside namespace internal should never be used directly by client code. | |
tbb::internal::gcc_builtins | |
Macros | |
#define | __TBB_WORDSIZE __SIZEOF_POINTER__ |
#define | __TBB_ENDIANNESS __TBB_ENDIAN_DETECT |
#define | __TBB_acquire_consistency_helper() __sync_synchronize() |
#define | __TBB_release_consistency_helper() __sync_synchronize() |
#define | __TBB_full_memory_fence() __sync_synchronize() |
#define | __TBB_control_consistency_helper() __sync_synchronize() |
#define | __TBB_MACHINE_DEFINE_ATOMICS(S, T) |
#define | __TBB_USE_GENERIC_FETCH_STORE 1 |
#define | __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 |
#define | __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 |
#define | __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 |
#define | __TBB_AtomicOR(P, V) __TBB_machine_or(P,V) |
#define | __TBB_AtomicAND(P, V) __TBB_machine_and(P,V) |
#define | __TBB_TryLockByte __TBB_machine_try_lock_byte |
#define | __TBB_UnlockByte __TBB_machine_unlock_byte |
#define | __TBB_Log2(V) __TBB_machine_lg(V) |
Typedefs | |
typedef unsigned char | __TBB_Flag |
typedef __TBB_atomic __TBB_Flag | __TBB_atomic_flag |
Functions | |
static void | __TBB_machine_or (volatile void *ptr, uintptr_t addend) |
static void | __TBB_machine_and (volatile void *ptr, uintptr_t addend) |
bool | __TBB_machine_try_lock_byte (__TBB_atomic_flag &flag) |
void | __TBB_machine_unlock_byte (__TBB_atomic_flag &flag) |
int | tbb::internal::gcc_builtins::clz (unsigned int x) |
int | tbb::internal::gcc_builtins::clz (unsigned long int x) |
int | tbb::internal::gcc_builtins::clz (unsigned long long int x) |
static intptr_t | __TBB_machine_lg (uintptr_t x) |
#define __TBB_acquire_consistency_helper | ( | ) | __sync_synchronize() |
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 57 of file gcc_generic.h.
#define __TBB_AtomicAND | ( | P, | |
V | |||
) | __TBB_machine_and(P,V) |
Definition at line 208 of file gcc_generic.h.
#define __TBB_AtomicOR | ( | P, | |
V | |||
) | __TBB_machine_or(P,V) |
Definition at line 207 of file gcc_generic.h.
#define __TBB_control_consistency_helper | ( | ) | __sync_synchronize() |
Definition at line 60 of file gcc_generic.h.
Referenced by tbb::queuing_mutex::scoped_lock::acquire(), tbb::queuing_rw_mutex::scoped_lock::acquire(), tbb::internal::generic_scheduler::get_task(), tbb::internal::mail_outbox::internal_pop(), tbb::internal::custom_scheduler< SchedulerTraits >::local_wait_for_all(), tbb::internal::custom_scheduler< SchedulerTraits >::receive_or_steal_task(), tbb::internal::generic_scheduler::steal_task_from(), tbb::internal::custom_scheduler< SchedulerTraits >::tally_completion_of_predecessor(), and tbb::queuing_rw_mutex::scoped_lock::upgrade_to_writer().
#define __TBB_ENDIANNESS __TBB_ENDIAN_DETECT |
FPU control setting not available for non-Intel architectures on Android
Definition at line 46 of file gcc_generic.h.
#define __TBB_full_memory_fence | ( | ) | __sync_synchronize() |
Definition at line 59 of file gcc_generic.h.
Referenced by tbb::atomic_fence().
#define __TBB_Log2 | ( | V | ) | __TBB_machine_lg(V) |
Definition at line 225 of file gcc_generic.h.
#define __TBB_MACHINE_DEFINE_ATOMICS | ( | S, | |
T | |||
) |
Definition at line 62 of file gcc_generic.h.
#define __TBB_release_consistency_helper | ( | ) | __sync_synchronize() |
Definition at line 58 of file gcc_generic.h.
#define __TBB_TryLockByte __TBB_machine_try_lock_byte |
Definition at line 210 of file gcc_generic.h.
#define __TBB_UnlockByte __TBB_machine_unlock_byte |
Definition at line 211 of file gcc_generic.h.
Referenced by tbb::spin_mutex::scoped_lock::internal_release(), tbb::spin_mutex::scoped_lock::release(), tbb::internal::__TBB_InitOnce::unlock(), tbb::spin_mutex::unlock(), and tbb::spin_mutex::scoped_lock::~scoped_lock().
#define __TBB_USE_GENERIC_FETCH_STORE 1 |
Definition at line 70 of file gcc_generic.h.
#define __TBB_USE_GENERIC_HALF_FENCED_LOAD_STORE 1 |
Definition at line 112 of file gcc_generic.h.
#define __TBB_USE_GENERIC_RELAXED_LOAD_STORE 1 |
Definition at line 113 of file gcc_generic.h.
#define __TBB_USE_GENERIC_SEQUENTIAL_CONSISTENCY_LOAD_STORE 1 |
Definition at line 114 of file gcc_generic.h.
#define __TBB_WORDSIZE __SIZEOF_POINTER__ |
Definition at line 26 of file gcc_generic.h.
typedef __TBB_atomic __TBB_Flag __TBB_atomic_flag |
Definition at line 106 of file gcc_generic.h.
typedef unsigned char __TBB_Flag |
Definition at line 105 of file gcc_generic.h.
Definition at line 120 of file gcc_generic.h.
|
inlinestatic |
Definition at line 220 of file gcc_generic.h.
References tbb::internal::gcc_builtins::clz().
Definition at line 116 of file gcc_generic.h.
|
inline |
Definition at line 124 of file gcc_generic.h.
|
inline |
Definition at line 128 of file gcc_generic.h.