]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.0.1/test/src/internal.h
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.0.1 / test / src / internal.h
1 /***** ANSI includes *****/\r
2 #include <assert.h>\r
3 #include <math.h>\r
4 #include <stdio.h>\r
5 #include <stdarg.h>\r
6 #include <stdlib.h>\r
7 #include <string.h>\r
8 #include <time.h>\r
9 \r
10 /***** internal includes *****/\r
11 #include "abstraction.h"\r
12 \r
13 /***** external includes *****/\r
14 #include "liblfds601.h"\r
15 \r
16 /***** defines *****/\r
17 #define and &&\r
18 #define or  ||\r
19 \r
20 #define RAISED   1\r
21 #define LOWERED  0\r
22 \r
23 #define NO_FLAGS 0x0\r
24 \r
25 /***** enums *****/\r
26 enum lfds601_test_operation\r
27 {\r
28   UNKNOWN,\r
29   HELP,\r
30   TEST,\r
31   BENCHMARK\r
32 };\r
33 \r
34 /***** structs *****/\r
35 #include "structures.h"\r
36 \r
37 /***** prototypes *****/\r
38 int main( int argc, char **argv );\r
39 \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
43 \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
46 \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
49 \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
52 \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
55 \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
62 \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
76 \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
86 \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
94 \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
100 \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
104 \r