]> pd.if.org Git - liblfds/blob - liblfds/liblfds7.0.0/liblfds700/src/lfds700_misc/lfds700_misc_query.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds7.0.0 / liblfds700 / src / lfds700_misc / lfds700_misc_query.c
1 /***** includes *****/
2 #include "lfds700_misc_internal.h"
3
4
5
6
7
8 /****************************************************************************/
9 void lfds700_misc_query( enum lfds700_misc_query query_type, void *query_input, void *query_output )
10 {
11   // TRD : query type can be any value in its range
12   // TRD : query_input can be NULL in some cases
13   // TRD : query_outputput can be NULL in some cases
14
15   switch( query_type )
16   {
17     case LFDS700_MISC_QUERY_GET_EXPONENTIAL_BACKOFF_TIMESLOT_LENGTH_IN_LOOP_ITERATIONS_FOR_CAS:
18       *(lfds700_pal_atom_t *) query_output = lfds700_misc_globals.exponential_backoff_timeslot_length_in_loop_iterations_for_cas;
19     break;
20
21     case LFDS700_MISC_QUERY_SET_EXPONENTIAL_BACKOFF_TIMESLOT_LENGTH_IN_LOOP_ITERATIONS_FOR_CAS:
22       LFDS700_PAL_ATOMIC_EXCHANGE( &lfds700_misc_globals.exponential_backoff_timeslot_length_in_loop_iterations_for_cas, (lfds700_pal_atom_t *) query_input );
23     break;
24
25     case LFDS700_MISC_QUERY_GET_EXPONENTIAL_BACKOFF_TIMESLOT_LENGTH_IN_LOOP_ITERATIONS_FOR_DWCAS:
26       *(lfds700_pal_atom_t *) query_output = lfds700_misc_globals.exponential_backoff_timeslot_length_in_loop_iterations_for_dwcas;
27     break;
28
29     case LFDS700_MISC_QUERY_SET_EXPONENTIAL_BACKOFF_TIMESLOT_LENGTH_IN_LOOP_ITERATIONS_FOR_DWCAS:
30       LFDS700_PAL_ATOMIC_EXCHANGE( &lfds700_misc_globals.exponential_backoff_timeslot_length_in_loop_iterations_for_dwcas, (lfds700_pal_atom_t *) query_input );
31     break;
32
33     case LFDS700_MISC_QUERY_GET_BUILD_AND_VERSION_STRING:
34     {
35       char static const
36         * const build_and_version_string = "liblfds " LFDS700_MISC_VERSION_STRING " (" BUILD_TYPE_STRING ", " LFDS700_PAL_OS_STRING ", " MODE_TYPE_STRING ", " LFDS700_PAL_PROCESSOR_STRING ", " LFDS700_PAL_COMPILER_STRING ")";
37
38       LFDS700_PAL_ASSERT( query_input == NULL );
39       LFDS700_PAL_ASSERT( query_output != NULL );
40
41       *(char const **) query_output = build_and_version_string;
42     }
43     break;
44   }
45
46   return;
47 }
48