1 #include "lfds611_liblfds_internal.h"
\r
7 /****************************************************************************/
\r
8 void lfds611_liblfds_abstraction_test_helper_increment_non_atomic( lfds611_atom_t *shared_counter )
\r
10 /* TRD : lfds611_atom_t must be volatile or the compiler
\r
11 optimizes it away into a single store
\r
14 volatile lfds611_atom_t
\r
17 assert( shared_counter != NULL );
\r
19 while( count++ < 10000000 )
\r
20 (*(lfds611_atom_t *) shared_counter)++;
\r
29 /****************************************************************************/
\r
30 void lfds611_liblfds_abstraction_test_helper_increment_atomic( volatile lfds611_atom_t *shared_counter )
\r
35 assert( shared_counter != NULL );
\r
37 while( count++ < 10000000 )
\r
38 lfds611_abstraction_increment( shared_counter );
\r
47 /****************************************************************************/
\r
48 void lfds611_liblfds_abstraction_test_helper_cas( volatile lfds611_atom_t *shared_counter, lfds611_atom_t *local_counter )
\r
52 original_destination;
\r
54 LFDS611_ALIGN(LFDS611_ALIGN_SINGLE_POINTER) lfds611_atom_t
\r
58 assert( shared_counter != NULL );
\r
59 assert( local_counter != NULL );
\r
61 while( loop++ < 1000000 )
\r
65 compare = *shared_counter;
\r
66 exchange = compare + 1;
\r
68 original_destination = lfds611_abstraction_cas( shared_counter, exchange, compare );
\r
70 while( original_destination != compare );
\r
82 /****************************************************************************/
\r
83 void lfds611_liblfds_abstraction_test_helper_dcas( volatile lfds611_atom_t *shared_counter, lfds611_atom_t *local_counter )
\r
88 LFDS611_ALIGN(LFDS611_ALIGN_DOUBLE_POINTER) lfds611_atom_t
\r
92 assert( shared_counter != NULL );
\r
93 assert( local_counter != NULL );
\r
95 while( loop++ < 1000000 )
\r
97 compare[0] = *shared_counter;
\r
98 compare[1] = *(shared_counter+1);
\r
102 exchange[0] = compare[0] + 1;
\r
103 exchange[1] = compare[1];
\r
105 while( 0 == lfds611_abstraction_dcas(shared_counter, exchange, compare) );
\r
107 (*local_counter)++;
\r