]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.1.1/test/src/internal.h
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.1.1 / test / src / internal.h
1 /***** ANSI includes *****/\r
2 /* TRD : _GNU_SOURCE is required by sched.h for pthread_attr_setaffinity_np, CPU_ZERO and CPU_SET\r
3          however it has to be defined very early as even the ANSI headers pull in stuff\r
4          which uses _GNU_SOURCE and which I think must be protected against multiple inclusion,\r
5          which basically means if you set it too late, it's not seen, because the headers\r
6          have already been parsed with _GNU_SOURCE unset\r
7 */\r
8 \r
9 #define _GNU_SOURCE\r
10 \r
11 #include <assert.h>\r
12 #include <math.h>\r
13 #include <stdio.h>\r
14 #include <stdarg.h>\r
15 #include <stdlib.h>\r
16 #include <string.h>\r
17 #include <time.h>\r
18 \r
19 /***** internal includes *****/\r
20 #include "abstraction.h"\r
21 \r
22 /***** external includes *****/\r
23 #include "liblfds611.h"\r
24 \r
25 /***** defines *****/\r
26 #define and &&\r
27 #define or  ||\r
28 \r
29 #define RAISED   1\r
30 #define LOWERED  0\r
31 \r
32 #define NO_FLAGS 0x0\r
33 \r
34 /***** enums *****/\r
35 enum lfds611_test_operation\r
36 {\r
37   UNKNOWN,\r
38   HELP,\r
39   TEST,\r
40   BENCHMARK\r
41 };\r
42 \r
43 /***** structs *****/\r
44 #include "structures.h"\r
45 \r
46 /***** prototypes *****/\r
47 int main( int argc, char **argv );\r
48 \r
49 void internal_display_test_name( char *test_name );\r
50 void internal_display_test_result( unsigned int number_name_dvs_pairs, ... );\r
51 void internal_display_lfds611_data_structure_validity( enum lfds611_data_structure_validity dvs );\r
52 \r
53 void benchmark_lfds611_freelist( void );\r
54   thread_return_t CALLING_CONVENTION benchmark_lfds611_freelist_thread_pop_and_push( void *freelist_benchmark );\r
55 \r
56 void benchmark_lfds611_queue( void );\r
57   thread_return_t CALLING_CONVENTION benchmark_lfds611_queue_thread_delfds611_queue_and_enqueue( void *queue_benchmark );\r
58 \r
59 void benchmark_lfds611_ringbuffer( void );\r
60   thread_return_t CALLING_CONVENTION benchmark_lfds611_ringbuffer_thread_write_and_read( void *ringbuffer_benchmark );\r
61 \r
62 void benchmark_lfds611_stack( void );\r
63   thread_return_t CALLING_CONVENTION benchmark_lfds611_stack_thread_push_and_pop( void *stack_benchmark );\r
64 \r
65 void test_lfds611_abstraction( void );\r
66   void abstraction_test_increment( void );\r
67     thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_increment( void *shared_counter );\r
68     thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_atomic_increment( void *shared_counter );\r
69   void abstraction_test_cas( void );\r
70     thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_cas( void *abstraction_test_cas_state );\r
71   void abstraction_test_dcas( void );\r
72     thread_return_t CALLING_CONVENTION abstraction_test_internal_thread_dcas( void *abstraction_test_dcas_state );\r
73 \r
74 void test_lfds611_freelist( void );\r
75   void freelist_test_internal_popping( void );\r
76     int freelist_test_internal_popping_init( void **user_data, void *user_state );\r
77     thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping( void *freelist_test_popping_state );\r
78   void freelist_test_internal_pushing( void );\r
79     int freelist_test_internal_pushing_init( void **user_data, void *user_state );\r
80     void freelist_test_internal_pushing_delete( void *user_data, void *user_state );\r
81     thread_return_t CALLING_CONVENTION freelist_test_internal_thread_pushing( void *freelist_test_pushing_state );\r
82   void freelist_test_internal_popping_and_pushing( void );\r
83     thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping_and_pushing_start_popping( void *freelist_test_popping_and_pushing_state );\r
84     thread_return_t CALLING_CONVENTION freelist_test_internal_thread_popping_and_pushing_start_pushing( void *freelist_test_popping_and_pushing_state );\r
85   void freelist_test_internal_rapid_popping_and_pushing( void );\r
86     thread_return_t CALLING_CONVENTION freelist_test_internal_thread_rapid_popping_and_pushing( void *lfds611_freelist_state );\r
87 \r
88 void test_lfds611_queue( void );\r
89   void queue_test_enqueuing( void );\r
90     thread_return_t CALLING_CONVENTION queue_test_internal_thread_simple_enqueuer( void *queue_test_enqueuing_state );\r
91   void queue_test_dequeuing( void );\r
92     thread_return_t CALLING_CONVENTION queue_test_internal_thread_simple_dequeuer( void *queue_test_dequeuing_state );\r
93   void queue_test_enqueuing_and_dequeuing( void );\r
94     thread_return_t CALLING_CONVENTION queue_test_internal_thread_enqueuer_and_dequeuer( void *queue_test_rapid_enqueuing_and_dequeuing_state );\r
95   void queue_test_rapid_enqueuing_and_dequeuing( void );\r
96     thread_return_t CALLING_CONVENTION queue_test_internal_thread_rapid_enqueuer_and_dequeuer( void *queue_test_rapid_enqueuing_and_dequeuing_state );\r
97 \r
98 void test_lfds611_ringbuffer( void );\r
99   void ringbuffer_test_reading( void );\r
100     thread_return_t CALLING_CONVENTION ringbuffer_test_thread_simple_reader( void *ringbuffer_test_reading_state );\r
101   void ringbuffer_test_writing( void );\r
102     thread_return_t CALLING_CONVENTION ringbuffer_test_thread_simple_writer( void *ringbuffer_test_writing_state );\r
103   void ringbuffer_test_reading_and_writing( void );\r
104     thread_return_t CALLING_CONVENTION ringbuffer_test_thread_reader_writer( void *ringbuffer_test_reading_and_writing_state );\r
105 \r
106 void test_lfds611_slist( void );\r
107   void test_slist_new_delete_get( void );\r
108     thread_return_t CALLING_CONVENTION slist_test_internal_thread_new_delete_get_new_head_and_next( void *slist_test_state );\r
109     thread_return_t CALLING_CONVENTION slist_test_internal_thread_new_delete_get_delete_and_get( void *slist_test_state );\r
110   void test_slist_get_set_user_data( void );\r
111     thread_return_t CALLING_CONVENTION slist_test_internal_thread_get_set_user_data( void *slist_test_state );\r
112   void test_slist_delete_all_elements( void );\r
113 \r
114 void test_lfds611_stack( void );\r
115   void stack_test_internal_popping( void );\r
116     thread_return_t CALLING_CONVENTION stack_test_internal_thread_popping( void *stack_test_popping_state );\r
117   void stack_test_internal_pushing( void );\r
118     thread_return_t CALLING_CONVENTION stack_test_internal_thread_pushing( void *stack_test_pushing_state );\r
119   void stack_test_internal_popping_and_pushing( void );\r
120     thread_return_t CALLING_CONVENTION stack_test_internal_thread_popping_and_pushing_start_popping( void *stack_test_popping_and_pushing_state );\r
121     thread_return_t CALLING_CONVENTION stack_test_internal_thread_popping_and_pushing_start_pushing( void *stack_test_popping_and_pushing_state );\r
122   void stack_test_internal_rapid_popping_and_pushing( void );\r
123     thread_return_t CALLING_CONVENTION stack_test_internal_thread_rapid_popping_and_pushing( void *stack_state );\r
124 \r