2 #include "libbenchmark_results_internal.h"
8 /****************************************************************************/
9 void libbenchmark_results_put_result( struct libbenchmark_results_state *rs,
10 enum libbenchmark_datastructure_id datastructure_id,
11 enum libbenchmark_benchmark_id benchmark_id,
12 enum libbenchmark_lock_id lock_id,
13 enum libbenchmark_topology_numa_mode numa_mode,
14 struct lfds710_list_aso_state *lpset,
15 lfds710_pal_uint_t logical_processor_number,
16 lfds710_pal_uint_t windows_logical_processor_group_number,
17 lfds710_pal_uint_t result )
19 struct libbenchmark_result
22 LFDS710_PAL_ASSERT( rs != NULL );
23 // TRD : datastructure_id can be any value in its range
24 // TRD : benchmark_id can be any value in its range
25 // TRD : lock_id can be any value in its range
26 // TRD : numa_mode can be any value in its range
27 LFDS710_PAL_ASSERT( lpset != NULL );
28 // TRD : logical_processor_number can be any value in its range
29 // TRD : windows_logical_processor_group_number can be any value in its range
30 // TRD : result can be any value in its range
32 r = libshared_memory_alloc_from_most_free_space_node( rs->ms, sizeof(struct libbenchmark_result), LFDS710_PAL_ATOMIC_ISOLATION_IN_BYTES );
34 r->benchmark_id = benchmark_id;
35 r->datastructure_id = datastructure_id;
37 r->numa_mode = numa_mode;
39 LIBBENCHMARK_TOPOLOGY_NODE_SET_TYPE( r->tns, LIBBENCHMARK_TOPOLOGY_NODE_TYPE_LOGICAL_PROCESSOR );
40 LIBBENCHMARK_TOPOLOGY_NODE_SET_LOGICAL_PROCESSOR_NUMBER( r->tns, logical_processor_number );
41 LIBBENCHMARK_TOPOLOGY_NODE_SET_WINDOWS_GROUP_NUMBER( r->tns, windows_logical_processor_group_number );
44 LFDS710_BTREE_AU_SET_KEY_IN_ELEMENT( r->baue, r );
46 lfds710_btree_au_insert( &rs->results_tree, &r->baue, NULL );