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__)    47 #if __TBB_WIN8UI_SUPPORT && (_WIN32_WINNT < 0x0A00)    57 #ifndef __TBB_HardwareConcurrency    77 int NumberOfProcessorGroups();
    80 int FindProcessorGroupIndex ( 
int processorIndex );
    83 void MoveThreadIntoProcessorGroup( 
void* hThread, 
int groupIndex );
   100 #if defined(min) || defined(max)   110 T 
min ( 
const T& val1, 
const T& val2 ) {
   111     return val1 < val2 ? val1 : val2;
   119 T 
max ( 
const T& val1, 
const T& val2 ) {
   120     return val1 < val2 ? val2 : val1;
   131 unsigned GetPrime ( 
unsigned seed );
   137 #if __TBB_OLD_PRIMES_RNG   139     static const unsigned c = 1;
   142     static const unsigned a = 0x9e3779b1; 
   143 #endif //__TBB_OLD_PRIMES_RNG   150     unsigned short get( 
unsigned& seed ) {
   151         unsigned short r = (
unsigned short)(seed>>16);
   160     template <
typename T>
   168 #if __TBB_OLD_PRIMES_RNG   173         c = (seed|1)*0xba5703f5; 
   185 template<
typename T1, 
typename T2, 
class Pred>
   188     while ( compare(oldValue, newValue) ) {
   189         if ( dst.compare_and_swap((T1)newValue, oldValue) == oldValue )
   212 template <
typename F>
   242 #if __TBB_USE_OS_AFFINITY_SYSCALL   244     typedef cpu_set_t basic_mask_t;
   245   #elif __FreeBSD_version >= 701000   246     typedef cpuset_t basic_mask_t;
   248     #error affinity_helper is not implemented in this OS   251         basic_mask_t* threadMask;
   273 #if __TBB_NUMA_SUPPORT   278 void bind_thread_to_node(
binding_handler* handler_ptr, 
int slot_num , 
int numa_id);
   279 void restore_affinity_mask(
binding_handler* handler_ptr, 
int slot_num);
   281 namespace numa_topology {
   282     bool is_initialized();
 A fast random number generator.
 
bool gcc_rethrow_exception_broken()
 
int AvailableHwConcurrency()
Returns maximal parallelism level supported by the current OS configuration.
 
bool cpu_has_speculation()
check for transaction support.
 
Do-once routine has been executed.
 
void spin_wait_while_eq(const volatile T &location, U value)
Spin WHILE the value of the variable is equal to a given value.
 
size_t DefaultSystemPageSize()
Returns OS regular memory page size.
 
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.
 
No execution attempts have been undertaken yet.
 
void PrintVersion()
Prints TBB version information on stderr.
 
unsigned short get()
Get a random number.
 
FastRandom(uint64_t seed)
 
#define __TBB_HardwareConcurrency()
 
FastRandom(void *unique_ptr)
Construct a random number generator.
 
void init(uint64_t seed, int_to_type< 8 >)
 
void init(uint32_t seed, int_to_type< 4 >)
 
void atomic_do_once(const F &initializer, atomic< do_once_state > &state)
One-time initialization function.
 
void protect_affinity_mask(bool)
 
void run_initializer(void(*f)(), atomic< do_once_state > &state)
 
do_once_state
One-time initialization states.
 
void PrintRMLVersionInfo(void *arg, const char *server_info)
A callback routine to print RML version information on stderr.
 
T min(const T &val1, const T &val2)
Utility template function returning lesser of the two values.
 
void destroy_process_mask()
 
Base class for types that should not be copied or assigned.
 
A thread is executing associated do-once routine.
 
Utility helper structure to ease overload resolution.
 
T max(const T &val1, const T &val2)
Utility template function returning greater of the two values.
 
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
 
unsigned short get(unsigned &seed)
Get a random number for the given seed; update the seed for next use.
 
FastRandom(uint32_t seed)
 
void fix_broken_rethrow()
 
void handle_win_error(int error_code)
Throws std::runtime_error with what() returning error_code description prefixed with aux_info.
 
const size_t ThreadStackSize
 
void PrintExtraVersionInfo(const char *category, const char *format,...)
Prints arbitrary extra TBB version information on stderr.
 
unsigned GetPrime(unsigned seed)