1 /***** ANSI includes *****/
\r
10 /***** internal includes *****/
\r
11 #include "abstraction.h"
\r
13 /***** external includes *****/
\r
14 #include "liblfds601.h"
\r
16 /***** defines *****/
\r
23 #define NO_FLAGS 0x0
\r
26 enum lfds601_test_operation
\r
34 /***** structs *****/
\r
35 #include "structures.h"
\r
37 /***** prototypes *****/
\r
38 int main( int argc, char **argv );
\r
40 void internal_display_test_name( char *test_name );
\r
41 void internal_display_test_result( unsigned int number_name_dvs_pairs, ... );
\r
42 void internal_display_data_structure_validity( enum lfds601_data_structure_validity dvs );
\r
44 void benchmark_lfds601_freelist( void );
\r
45 thread_return_t CALLING_CONVENTION benchmark_lfds601_freelist_thread_pop_and_push( void *lfds601_freelist_benchmark );
\r
47 void benchmark_lfds601_queue( void );
\r
48 thread_return_t CALLING_CONVENTION benchmark_lfds601_queue_thread_delfds601_queue_and_enqueue( void *lfds601_queue_benchmark );
\r
50 void benchmark_lfds601_ringbuffer( void );
\r
51 thread_return_t CALLING_CONVENTION benchmark_lfds601_ringbuffer_thread_write_and_read( void *lfds601_ringbuffer_benchmark );
\r
53 void benchmark_lfds601_stack( void );
\r
54 thread_return_t CALLING_CONVENTION benchmark_lfds601_stack_thread_push_and_pop( void *lfds601_stack_benchmark );
\r
56 void test_lfds601_abstraction( void );
\r
57 void abstraction_test_increment( void );
\r
58 thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_increment( void *shared_counter );
\r
59 thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_atomic_increment( void *shared_counter );
\r
60 void abstraction_test_dcas( void );
\r
61 thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_dcas( void *abstraction_test_dcas_state );
\r
63 void test_lfds601_freelist( void );
\r
64 void freelist_test_internal_popping( void );
\r
65 int freelist_test_internal_popping_init( void **user_data, void *user_state );
\r
66 thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping( void *freelist_test_popping_state );
\r
67 void freelist_test_internal_pushing( void );
\r
68 int freelist_test_internal_pushing_init( void **user_data, void *user_state );
\r
69 void freelist_test_internal_pushing_delete( void *user_data, void *user_state );
\r
70 thread_return_t CALLING_CONVENTION freelist_test_internal_thread_pushing( void *freelist_test_pushing_state );
\r
71 void freelist_test_internal_popping_and_pushing( void );
\r
72 thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping_and_pushing_start_popping( void *freelist_test_popping_and_pushing_state );
\r
73 thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping_and_pushing_start_pushing( void *freelist_test_popping_and_pushing_state );
\r
74 void freelist_test_internal_rapid_popping_and_pushing( void );
\r
75 thread_return_t CALLING_CONVENTION freelist_test_internal_thread_rapid_popping_and_pushing( void *lfds601_freelist_state );
\r
77 void test_lfds601_queue( void );
\r
78 void queue_test_enqueuing( void );
\r
79 thread_return_t CALLING_CONVENTION queue_test_internal_thread_simple_enqueuer( void *queue_test_enqueuing_state );
\r
80 void queue_test_dequeuing( void );
\r
81 thread_return_t CALLING_CONVENTION queue_test_internal_thread_simple_dequeuer( void *queue_test_dequeuing_state );
\r
82 void queue_test_enqueuing_and_dequeuing( void );
\r
83 thread_return_t CALLING_CONVENTION queue_test_internal_thread_enqueuer_and_dequeuer( void *queue_test_rapid_enqueuing_and_dequeuing_state );
\r
84 void queue_test_rapid_enqueuing_and_dequeuing( void );
\r
85 thread_return_t CALLING_CONVENTION queue_test_internal_thread_rapid_enqueuer_and_dequeuer( void *queue_test_rapid_enqueuing_and_dequeuing_state );
\r
87 void test_lfds601_ringbuffer( void );
\r
88 void ringbuffer_test_reading( void );
\r
89 thread_return_t CALLING_CONVENTION ringbuffer_test_thread_simple_reader( void *ringbuffer_test_reading_state );
\r
90 void ringbuffer_test_writing( void );
\r
91 thread_return_t CALLING_CONVENTION ringbuffer_test_thread_simple_writer( void *ringbuffer_test_writing_state );
\r
92 void ringbuffer_test_reading_and_writing( void );
\r
93 thread_return_t CALLING_CONVENTION ringbuffer_test_thread_reader_writer( void *ringbuffer_test_reading_and_writing_state );
\r
95 void test_lfds601_slist( void );
\r
96 thread_return_t CALLING_CONVENTION lfds601_slist_internal_thread_head_writer( void *lfds601_slist_thread_start_state );
\r
97 thread_return_t CALLING_CONVENTION lfds601_slist_internal_thread_after_writer( void *lfds601_slist_thread_start_state );
\r
98 thread_return_t CALLING_CONVENTION lfds601_slist_internal_thread_traverser( void *lfds601_slist_thread_start_state );
\r
99 thread_return_t CALLING_CONVENTION lfds601_slist_internal_thread_deleter_traverser( void *lfds601_slist_thread_start_state );
\r
101 void test_lfds601_stack( void );
\r
102 thread_return_t CALLING_CONVENTION lfds601_stack_internal_thread_reader( void *lfds601_stack_state );
\r
103 thread_return_t CALLING_CONVENTION lfds601_stack_internal_thread_writer( void *lfds601_stack_state );
\r