Intel(R) Threading Building Blocks Doxygen Documentation
version 4.2.3
|
Go to the documentation of this file.
17 #ifndef _TBB_tbb_misc_H
18 #define _TBB_tbb_misc_H
24 #if __TBB_NUMA_SUPPORT
28 #if __linux__ || __FreeBSD__
29 #include <sys/param.h>
30 #if __FreeBSD_version >= 701000
31 #include <sys/cpuset.h>
36 #define __TBB_OS_AFFINITY_SYSCALL_PRESENT ((__linux__ && !__ANDROID__) || (__FreeBSD_version >= 701000))
39 #define __TBB_USE_OS_AFFINITY_SYSCALL (__TBB_OS_AFFINITY_SYSCALL_PRESENT && !__bg__)
43 #if __TBB_NUMA_SUPPORT
44 namespace interface7 {
class task_arena; }
45 namespace interface6 {
class task_scheduler_observer; }
52 #if __TBB_WIN8UI_SUPPORT && (_WIN32_WINNT < 0x0A00)
62 #ifndef __TBB_HardwareConcurrency
82 int NumberOfProcessorGroups();
85 int FindProcessorGroupIndex (
int processorIndex );
88 void MoveThreadIntoProcessorGroup(
void* hThread,
int groupIndex );
105 #if defined(min) || defined(max)
115 T
min (
const T& val1,
const T& val2 ) {
116 return val1 < val2 ? val1 : val2;
124 T
max (
const T& val1,
const T& val2 ) {
125 return val1 < val2 ? val2 : val1;
136 unsigned GetPrime (
unsigned seed );
142 #if __TBB_OLD_PRIMES_RNG
144 static const unsigned c = 1;
147 static const unsigned a = 0x9e3779b1;
148 #endif //__TBB_OLD_PRIMES_RNG
155 unsigned short get(
unsigned& seed ) {
156 unsigned short r = (
unsigned short)(seed>>16);
165 template <
typename T>
173 #if __TBB_OLD_PRIMES_RNG
178 c = (seed|1)*0xba5703f5;
190 template<
typename T1,
typename T2,
class Pred>
193 while ( compare(oldValue, newValue) ) {
194 if ( dst.compare_and_swap((T1)newValue, oldValue) == oldValue )
217 template <
typename F>
247 #if __TBB_USE_OS_AFFINITY_SYSCALL
249 typedef cpu_set_t basic_mask_t;
250 #elif __FreeBSD_version >= 701000
251 typedef cpuset_t basic_mask_t;
253 #error affinity_helper is not implemented in this OS
256 basic_mask_t* threadMask;
278 #if __TBB_NUMA_SUPPORT
290 namespace numa_topology {
291 bool is_initialized();
bool gcc_rethrow_exception_broken()
void PrintVersion()
Prints TBB version information on stderr.
void run_initializer(void(*f)(), atomic< do_once_state > &state)
A fast random number generator.
do_once_state
One-time initialization states.
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void PrintRMLVersionInfo(void *arg, const char *server_info)
A callback routine to print RML version information on stderr.
No execution attempts have been undertaken yet.
FastRandom(void *unique_ptr)
Construct a random number generator.
int AvailableHwConcurrency()
Returns maximal parallelism level supported by the current OS configuration.
const size_t ThreadStackSize
Utility helper structure to ease overload resolution.
void protect_affinity_mask(bool)
void init(uint64_t seed, int_to_type< 8 >)
Do-once routine has been executed.
void atomic_do_once(const F &initializer, atomic< do_once_state > &state)
One-time initialization function.
size_t DefaultSystemPageSize()
Returns OS regular memory page size.
T max(const T &val1, const T &val2)
Utility template function returning greater of the two values.
unsigned short get()
Get a random number.
unsigned short get(unsigned &seed)
Get a random number for the given seed; update the seed for next use.
void PrintExtraVersionInfo(const char *category, const char *format,...)
Prints arbitrary extra TBB version information on stderr.
unsigned GetPrime(unsigned seed)
FastRandom(uint32_t seed)
T min(const T &val1, const T &val2)
Utility template function returning lesser of the two values.
A thread is executing associated do-once routine.
FastRandom(uint64_t seed)
void init(uint32_t seed, int_to_type< 4 >)
void spin_wait_while_eq(const volatile T &location, U value)
Spin WHILE the value of the variable is equal to a given value.
T1 atomic_update(tbb::atomic< T1 > &dst, T2 newValue, Pred compare)
Atomically replaces value of dst with newValue if they satisfy condition of compare predicate.
void destroy_process_mask()
void handle_win_error(int error_code)
Throws std::runtime_error with what() returning error_code description prefixed with aux_info.
bool cpu_has_speculation()
check for transaction support.
#define __TBB_HardwareConcurrency()
Base class for types that should not be copied or assigned.
void fix_broken_rethrow()
Copyright © 2005-2019 Intel Corporation. All Rights Reserved.
Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are
registered trademarks or trademarks of Intel Corporation or its
subsidiaries in the United States and other countries.
* Other names and brands may be claimed as the property of others.