29 static atomic<do_once_state> concmon_module_inited;
31 void WINAPI init_binsem_using_event( SRWLOCK* h_ )
33 srwl_or_handle* shptr = (srwl_or_handle*) h_;
34 shptr->h = CreateEventEx( NULL, NULL, 0, EVENT_ALL_ACCESS|SEMAPHORE_ALL_ACCESS );
37 void WINAPI acquire_binsem_using_event( SRWLOCK* h_ )
39 srwl_or_handle* shptr = (srwl_or_handle*) h_;
40 WaitForSingleObjectEx( shptr->h, INFINITE, FALSE );
43 void WINAPI release_binsem_using_event( SRWLOCK* h_ )
45 srwl_or_handle* shptr = (srwl_or_handle*) h_;
49 static void (WINAPI *__TBB_init_binsem)( SRWLOCK* ) = (
void (WINAPI *)(SRWLOCK*))&init_binsem_using_event;
50 static void (WINAPI *__TBB_acquire_binsem)( SRWLOCK* ) = (
void (WINAPI *)(SRWLOCK*))&acquire_binsem_using_event;
51 static void (WINAPI *__TBB_release_binsem)( SRWLOCK* ) = (
void (WINAPI *)(SRWLOCK*))&release_binsem_using_event;
55 DLD(InitializeSRWLock, __TBB_init_binsem),
56 DLD(AcquireSRWLockExclusive, __TBB_acquire_binsem),
57 DLD(ReleaseSRWLockExclusive, __TBB_release_binsem)
60 inline void init_concmon_module()
62 __TBB_ASSERT( (uintptr_t)__TBB_init_binsem==(uintptr_t)&init_binsem_using_event, NULL );
64 __TBB_ASSERT( (uintptr_t)__TBB_init_binsem!=(uintptr_t)&init_binsem_using_event, NULL );
65 __TBB_ASSERT( (uintptr_t)__TBB_acquire_binsem!=(uintptr_t)&acquire_binsem_using_event, NULL );
66 __TBB_ASSERT( (uintptr_t)__TBB_release_binsem!=(uintptr_t)&release_binsem_using_event, NULL );
73 __TBB_init_binsem( &
my_sem.lock );
74 if( (uintptr_t)__TBB_init_binsem!=(uintptr_t)&init_binsem_using_event )
79 if( (uintptr_t)__TBB_init_binsem==(uintptr_t)&init_binsem_using_event )
Association between a handler name and location of pointer to it.
void atomic_do_once(const F &initializer, atomic< do_once_state > &state)
One-time initialization function.
OPEN_INTERNAL_NAMESPACE bool dynamic_link(const char *, const dynamic_link_descriptor *, size_t, dynamic_link_handle *handle, int)
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
#define DLD(s, h)
The helper to construct dynamic_link_descriptor structure.