]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.0.1/liblfds601/src/lfds601_stack/lfds601_stack_internal.h
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.0.1 / liblfds601 / src / lfds601_stack / lfds601_stack_internal.h
1 /***** the library wide include file *****/\r
2 #include "lfds601_internal.h"\r
3 \r
4 /***** pragmas *****/\r
5 \r
6 /***** defines *****/\r
7 #define LFDS601_STACK_POINTER 0\r
8 #define LFDS601_STACK_COUNTER 1\r
9 #define LFDS601_STACK_PAC_SIZE 2\r
10 \r
11 /***** structures *****/\r
12 #pragma pack( push, LFDS601_ALIGN_DOUBLE_POINTER )\r
13 \r
14 struct lfds601_stack_state\r
15 {\r
16   // TRD : must come first for alignment\r
17   struct lfds601_stack_element\r
18     *volatile top[LFDS601_STACK_PAC_SIZE];\r
19 \r
20   lfds601_atom_t\r
21     aba_counter;\r
22 \r
23   struct lfds601_freelist_state\r
24     *fs;\r
25 };\r
26 \r
27 struct lfds601_stack_element\r
28 {\r
29   struct lfds601_stack_element\r
30     *next[LFDS601_STACK_PAC_SIZE];\r
31 \r
32   struct lfds601_freelist_element\r
33     *fe;\r
34 \r
35   void\r
36     *user_data;\r
37 };\r
38 \r
39 #pragma pack( pop )\r
40 \r
41 /***** private prototypes *****/\r
42 int lfds601_stack_internal_freelist_init_function( void **user_data, void *user_state );\r
43 void lfds601_stack_internal_freelist_delete_function( void *user_data, void *user_state );\r
44 \r
45 void lfds601_stack_internal_new_element_from_freelist( struct lfds601_stack_state *ss, struct lfds601_stack_element *se[LFDS601_STACK_PAC_SIZE], void *user_data );\r
46 void lfds601_stack_internal_new_element( struct lfds601_stack_state *ss, struct lfds601_stack_element *se[LFDS601_STACK_PAC_SIZE], void *user_data );\r
47 void lfds601_stack_internal_init_element( struct lfds601_stack_state *ss, struct lfds601_stack_element *se[LFDS601_STACK_PAC_SIZE], struct lfds601_freelist_element *fe, void *user_data );\r
48 \r
49 void lfds601_stack_internal_push( struct lfds601_stack_state *ss, struct lfds601_stack_element *se[LFDS601_STACK_PAC_SIZE] );\r
50 \r