1 /***** the library wide include file *****/
\r
2 #include "liblfds611_internal.h"
\r
4 /***** defines *****/
\r
5 #define LFDS611_FREELIST_POINTER 0
\r
6 #define LFDS611_FREELIST_COUNTER 1
\r
7 #define LFDS611_FREELIST_PAC_SIZE 2
\r
9 /***** structures *****/
\r
10 #pragma pack( push, LFDS611_ALIGN_DOUBLE_POINTER )
\r
12 struct lfds611_freelist_state
\r
14 struct lfds611_freelist_element
\r
15 *volatile top[LFDS611_FREELIST_PAC_SIZE];
\r
18 (*user_data_init_function)( void **user_data, void *user_state );
\r
28 struct lfds611_freelist_element
\r
30 struct lfds611_freelist_element
\r
31 *next[LFDS611_FREELIST_PAC_SIZE];
\r
39 /***** private prototypes *****/
\r
40 lfds611_atom_t lfds611_freelist_internal_new_element( struct lfds611_freelist_state *fs, struct lfds611_freelist_element **fe );
\r
41 void lfds611_freelist_internal_validate( struct lfds611_freelist_state *fs, struct lfds611_validation_info *vi, enum lfds611_data_structure_validity *lfds611_freelist_validity );
\r