1 /***** the library wide include file *****/
2 #include "liblfds610_internal.h"
5 #define LFDS610_FREELIST_POINTER 0
6 #define LFDS610_FREELIST_COUNTER 1
7 #define LFDS610_FREELIST_PAC_SIZE 2
9 /***** structures *****/
10 #pragma pack( push, LFDS610_ALIGN_DOUBLE_POINTER )
12 struct lfds610_freelist_state
14 struct lfds610_freelist_element
15 *volatile top[LFDS610_FREELIST_PAC_SIZE];
18 (*user_data_init_function)( void **user_data, void *user_state );
28 struct lfds610_freelist_element
30 struct lfds610_freelist_element
31 *next[LFDS610_FREELIST_PAC_SIZE];
39 /***** private prototypes *****/
40 lfds610_atom_t lfds610_freelist_internal_new_element( struct lfds610_freelist_state *fs, struct lfds610_freelist_element **fe );
41 void lfds610_freelist_internal_validate( struct lfds610_freelist_state *fs, struct lfds610_validation_info *vi, enum lfds610_data_structure_validity *lfds610_freelist_validity );