2 #define LIBBENCHMARK_THREADSET_PER_THREAD_STATE_GET_USERS_PER_THREAD_STATE( libbenchmark_threadset_per_thread_state ) (libbenchmark_threadset_per_thread_state).users_per_thread_state
3 #define LIBBENCHMARK_THREADSET_PER_THREAD_STATE_GET_USERS_PER_NUMA_STATE( libbenchmark_threadset_per_thread_state ) (libbenchmark_threadset_per_thread_state).numa_node_state->users_per_numa_state
4 #define LIBBENCHMARK_THREADSET_PER_THREAD_STATE_GET_USERS_OVERALL_STATE( libbenchmark_threadset_per_thread_state ) (libbenchmark_threadset_per_thread_state).threadset_state->users_threadset_state
7 struct libbenchmark_threadset_per_thread_state
11 *threadset_start_flag;
13 libshared_pal_thread_handle_t
16 struct lfds710_list_asu_element
19 struct libbenchmark_topology_node_state
22 struct libbenchmark_threadset_per_numa_state
25 struct libbenchmark_threadset_state
28 struct libshared_pal_thread_info
32 *users_per_thread_state;
35 struct libbenchmark_threadset_per_numa_state
40 struct lfds710_list_asu_element
44 *users_per_numa_state;
47 struct libbenchmark_threadset_state
52 libshared_pal_thread_return_t
53 (LIBSHARED_PAL_THREAD_CALLING_CONVENTION *thread_function)( void *thread_user_state );
55 struct lfds710_list_asu_state
56 list_of_per_numa_states,
57 list_of_per_thread_states;
60 *users_threadset_state;
63 /***** prototypes *****/
64 void libbenchmark_threadset_init( struct libbenchmark_threadset_state *tsets,
65 struct libbenchmark_topology_state *ts,
66 struct lfds710_list_aso_state *logical_processor_set,
67 struct libshared_memory_state *ms,
68 libshared_pal_thread_return_t (LIBSHARED_PAL_THREAD_CALLING_CONVENTION *thread_function)( void *thread_user_state ),
69 void *users_threadset_state );
70 void libbenchmark_threadset_cleanup( struct libbenchmark_threadset_state *ts );
72 void libbenchmark_threadset_run( struct libbenchmark_threadset_state *tsets );
74 void libbenchmark_threadset_thread_ready_and_wait( struct libbenchmark_threadset_per_thread_state *ts );