1 /***** the library wide include file *****/
\r
2 #include "liblfds611_internal.h"
\r
4 /***** pragmas *****/
\r
6 /***** defines *****/
\r
7 #define LFDS611_STACK_POINTER 0
\r
8 #define LFDS611_STACK_COUNTER 1
\r
9 #define LFDS611_STACK_PAC_SIZE 2
\r
11 /***** structures *****/
\r
12 #pragma pack( push, LFDS611_ALIGN_DOUBLE_POINTER )
\r
14 struct lfds611_stack_state
\r
16 // TRD : must come first for alignment
\r
17 struct lfds611_stack_element
\r
18 *volatile top[LFDS611_STACK_PAC_SIZE];
\r
23 struct lfds611_freelist_state
\r
27 struct lfds611_stack_element
\r
29 struct lfds611_stack_element
\r
30 *next[LFDS611_STACK_PAC_SIZE];
\r
32 struct lfds611_freelist_element
\r
41 /***** private prototypes *****/
\r
42 int lfds611_stack_internal_freelist_init_function( void **user_data, void *user_state );
\r
43 void lfds611_stack_internal_freelist_delete_function( void *user_data, void *user_state );
\r
45 void lfds611_stack_internal_new_element_from_freelist( struct lfds611_stack_state *ss, struct lfds611_stack_element *se[LFDS611_STACK_PAC_SIZE], void *user_data );
\r
46 void lfds611_stack_internal_new_element( struct lfds611_stack_state *ss, struct lfds611_stack_element *se[LFDS611_STACK_PAC_SIZE], void *user_data );
\r
47 void lfds611_stack_internal_init_element( struct lfds611_stack_state *ss, struct lfds611_stack_element *se[LFDS611_STACK_PAC_SIZE], struct lfds611_freelist_element *fe, void *user_data );
\r
49 void lfds611_stack_internal_push( struct lfds611_stack_state *ss, struct lfds611_stack_element *se[LFDS611_STACK_PAC_SIZE] );
\r
51 void lfds611_stack_internal_validate( struct lfds611_stack_state *ss, struct lfds611_validation_info *vi, enum lfds611_data_structure_validity *stack_validity, enum lfds611_data_structure_validity *freelist_validity );
\r